Visit stackoverflow.com/#_=_
and window.location.hash
evaluates to #_=_
. Fine.
Now execute window.location.hash = ''
to clear the hash, and the URL becomes stackoverflow.com/#
. (Notice the trailing #
.)
Why is the #
in window.location.hash
inconsistently included or excluded? How can the #
be removed from the URL without reloading the page?
(MDN says
[the hash is] the part of the URL that follows the # symbol, including the # symbol.
but that is not true for in the case of an empty hash.)
To answer the second question (removing the #
without a page refresh):
history.pushState('', document.title, window.location.pathname);