ссылка для удаления `#` из URL без перезагрузки страницы - PullRequest
0 голосов
/ 25 мая 2019

У меня есть образец HTML-страницы с именем pound.html

<body onload="alert('loading')">
  <a href="#something">something after #</a><br />
  <a href="#">nothing after #</a><br />
  <a href="">no # at all</a><br >
</body>

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

Если я нажму на первую ссылку, URL изменится на pound.html#something, как и ожидалось. Если я нажму на вторую ссылку, она изменится на pound.html#, снова без перезагрузки. Но если я нажму на третью ссылку, а URL-адрес вернется к pound.html (нет #), то перезагрузит страницу.

Я всегда вижу одностраничные приложения, в которых у вас нет # при запуске, но как только вы ушли в другое место и затем вернетесь на домашнюю страницу, у вас останется #. Есть ли способ заставить его удалить # из URL без перезагрузки страницы (например, когда вы возвращаетесь на домашнюю страницу)?


Если вы начинаете с pound.html, а затем нажимаете на первую ссылку и переходите к pound.html#something, стрелка возврата браузера может вернуть вас к pound.html без перезагрузки страницы.

Как уже упоминалось в комментариях, здесь есть много javascript-решений Как удалить хеш из window.location (URL) с помощью JavaScript без обновления страницы?

Однако кто-нибудь знает, есть ли способ удалить ссылку, чтобы сделать это?

1 Ответ

0 голосов
/ 25 мая 2019

Как насчет:

window.location.hash = '1' // add the `#1` to URL (adds hash if its not already there)
window.location.hash = '' // just leave the `#` symbol in URL
window.history.replaceState(null,document.title,location.href.slice(0, -1))

Он удалит последний символ из вашего URL (в данном случае, #)

...