Привязка к URL дескриптора изменяет событие в js

Как я могу написать код обратного вызова JavaScript, который будет выполнен на каких-либо изменениях в привязке к URL?

Например, от http://example.com#a кому: http://example.com#b

87
задан Brian Tompsett - 汤莱恩 2 September 2019 в 15:59
поделиться

4 ответа

Системы пользовательского поиска Google используют таймер для проверки хэша на соответствие предыдущему значению, в то время как дочерний iframe в отдельном домене обновляет хэш местоположения родителя, чтобы он содержал размер тела документа iframe. Когда таймер улавливает изменение, родительский элемент может изменить размер iframe в соответствии с размером тела, чтобы полосы прокрутки не отображались.

Примерно следующее:

var storedHash = window.location.hash;
window.setInterval(function () {
    if (window.location.hash != storedHash) {
        storedHash = window.location.hash;
        hashChanged(storedHash);
    }
}, 100); // Google uses 100ms intervals I think, might be lower

Google Chrome 5, Safari 5, Opera 10.60 , Firefox 3.6 и Internet Explorer 8 все поддерживает событие hashchange :

if ("onhashchange" in window) // does the browser support the hashchange event?
    window.onhashchange = function () {
        hashChanged(window.location.hash);
    }

и объединяет его:

if ("onhashchange" in window) { // event supported?
    window.onhashchange = function () {
        hashChanged(window.location.hash);
    }
}
else { // event not supported:
    var storedHash = window.location.hash;
    window.setInterval(function () {
        if (window.location.hash != storedHash) {
            storedHash = window.location.hash;
            hashChanged(storedHash);
        }
    }, 100);
}

jQuery также имеет плагин, который проверяет наличие события hashchange и при необходимости предоставляет свое собственное - http: // benalman.com/projects/jquery-hashchange-plugin/.

РЕДАКТИРОВАТЬ : Обновлена ​​поддержка браузера (снова).

124
ответ дан 24 November 2019 в 07:50
поделиться

Вы можете получить больше информации из этой

типов событий мутации

Модуль события мутации разработан Разрешить уведомление о любых изменениях к структуре документа, в том числе привлечения и модификации текста.

0
ответ дан 24 November 2019 в 07:50
поделиться

Из того, что я вижу в других настолько вопросы, единственное работоспособное решение для перекрестного браузера является таймером. Проверьте этот вопрос , например.

2
ответ дан 24 November 2019 в 07:50
поделиться

SetInterval () - только универсальное решение. Но в будущем есть свет в форме события Hashchange

3
ответ дан 24 November 2019 в 07:50
поделиться
Другие вопросы по тегам:

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