Search code examples
javascripthtmlurl-routingwindow.location

Clearing URL hash


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.)


Solution

  • To answer the second question (removing the # without a page refresh):

    history.pushState('', document.title, window.location.pathname);