location.hash вступают в силу только один раз в Chrome и Safari - PullRequest
7 голосов
/ 20 октября 2011

Я использую location.hash, чтобы прокрутить где-нибудь на моей странице.Он отлично работает, когда у местоположения нет хэша.Но это не работает, если местоположение уже имеет такое же значение хеш-функции.

Например, location.hash = 'a'; прокручивается до <div id="a"></div>.Теперь location.href будет похоже на http://www.example.com/test.html#a.И если location.hash = 'a'; будет запущен снова, окно не будет прокручиваться.Это происходит только в Chrome и Safari.

Я нашел решение на Прокрутка страницы с помощью location.hash в Safari , но я не хочу добавлять ненужный тег.

И я тоже попробовал location.href = '#a'.Это работает нормально, но я боюсь, что это приведет к перезагрузке страницы.У кого-нибудь есть идеи получше?

1 Ответ

17 голосов
/ 20 октября 2011

Лучше всего временно заменить хэш некоторым значением, которого, как вы знаете, не существует на странице, а затем перезагрузить хэш, пытаясь получить к нему доступ.

location.hash = 'a';

// this is the function that changes the hash
function setHash(newHash) {
    location.hash = 'someHashThatDoesntExist';
    location.hash = newHash;
}

setHash('a');

Это должно помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...