Якорь при обновлении страницы

При обновлении страницы якорь остается в URL пути. Что с этим делать?


Ответы (2 шт):

Автор решения: De.Minov

Если вам нужно, чтобы после якорь сделал свое дело один раз, когда вы использовали якорную ссылку, а после его не стало, то можете просто удалить якорь из ссылки:

if(location.hash) history.replaceState({}, document.title, location.href.split('#')[0]);

После этого ссылка в адресной строке сменится на ссылку без якоря и последующее обновление странице не "стриггерит" якорь

→ Ссылка
Автор решения: DiD

За событие смены якоря отвечает событие hashchange у window. Методом замены состояния можно выключить якорь из URL:

history.replaceState(null,"", e.oldURL);

onhashchange = e => {
  history.replaceState(null,"", e.oldURL);
}
div { height: 500vh; }
<a id="contents"><h2>Contents</h2></a>
<a href="#test1">#test1</a><br/>
<a href="#test2">#test2</a>
<div></div>
<a id="test1"><h2>Test1</h2></a>
<a href="#contents">#contents</a><br/>
<a href="#test2">#test2</a>
<div></div>
<a id="test2"><h2>Test2</h2></a>
<a href="#contents">#contents</a><br/>
<a href="#test1">#test1</a>
<div></div>

→ Ссылка