Как прислушаться к изменениям в элементе заголовка?

В JavaScript, там техника для прислушиваний к изменениям в элементе заголовка?

21
задан Brian Tompsett - 汤莱恩 19 November 2019 в 09:48
поделиться

2 ответа

Нет встроенного события. Однако для этого можно использовать setInterval :

var oldTitle = document.title;
window.setInterval(function()
{
    if (document.title !== oldTitle)
    {
        //title has changed - do something
    }
    oldTitle = document.title;
}, 100); //check every 100ms
3
ответ дан 29 November 2019 в 06:28
поделиться

Это можно сделать с помощью событий в большинстве современных браузеров (заметными исключениями являются все версии Opera и Firefox 2.0 и более ранние). В IE вы можете использовать событие propertychange для документа , а в последних версиях браузеров Mozilla и WebKit вы можете использовать общее событие DOMSubtreeModified . Для других браузеров вам придется вернуться к опросу document.title .

Обратите внимание, что я не смог протестировать это во всех браузерах, поэтому вам следует тщательно протестировать это перед использованием.

ОБНОВЛЕНИЕ, 9 АПРЕЛЯ 2015 г.

Наблюдатели за мутациями сегодня используются в большинстве браузеров. См. Для примера ответ Владимира Старкова. Возможно, вам понадобится что-то из следующего в качестве запасного варианта для старых браузеров, таких как IE <= 10 и более старые браузеры Android.

function titleModified() {
    window.alert("Title modifed");
}

window.onload = function() {
    var titleEl = document.getElementsByTagName("title")[0];
    var docEl = document.documentElement;

    if (docEl && docEl.addEventListener) {
        docEl.addEventListener("DOMSubtreeModified", function(evt) {
            var t = evt.target;
            if (t === titleEl || (t.parentNode && t.parentNode === titleEl)) {
                titleModified();
            }
        }, false);
    } else {
        document.onpropertychange = function() {
            if (window.event.propertyName == "title") {
                titleModified();
            }
        };
    }
};
19
ответ дан 29 November 2019 в 06:28
поделиться
Другие вопросы по тегам:

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