Clearing URL hash

Randomblue picture Randomblue · Mar 10, 2013 · Viewed 27.8k times · Source

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

Answer

Randomblue picture Randomblue · Mar 10, 2013

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

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