LenovoId
@LenovoId
svg, css,js

Убрать hash и вернуть url без #, как?

Как добраться до решётки я понял :
console.log(location.hash.replace(/#/g,''));
А как теперь при клике на анкор (якорь) вернуть URL без решётки (hash) ?

Я делал так но не помогло :

function init() {
    var link = document.getElementsByTagName("a");

    link.onclick = function() {
        history.pushState('', document.title, window.location.pathname);
    };
}

init();

var link = document.getElementsByTagName("a");

link.onclick = function (){
   location = location.hash.replace(/#/g,'');
}


https://ru.stackoverflow.com/q/977394/330688
  • Вопрос задан
  • 3226 просмотров
Решения вопроса 2
function locationHashChanged() {
  if (location.hash) {
    var hash = location.hash.replace(/#/, '');
    history.replaceState({}, '', hash)
  }
}

window.onhashchange = locationHashChanged;
Ответ написан
Robur
@Robur
Знаю больше чем это необходимо
a.addEventListener('click', function () {
	setTimeout(() => history.replaceState({}, '', locationWithoutHash))
})


после этого ссылка при наведении мыши вместо http://site.ru/#portfolio покажет http://site.ru/portfolio#portfolio но с этим можно жить (и даже нужно чтобы анкоры продолжали работать), зато страница проскроллится куда вам надо и в адресной строке будет http://site.ru/portfolio
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы