В JavaScript, там техника для прислушиваний к изменениям в элементе заголовка?
Нет встроенного события. Однако для этого можно использовать setInterval
:
var oldTitle = document.title;
window.setInterval(function()
{
if (document.title !== oldTitle)
{
//title has changed - do something
}
oldTitle = document.title;
}, 100); //check every 100ms
Это можно сделать с помощью событий в большинстве современных браузеров (заметными исключениями являются все версии Opera и Firefox 2.0 и более ранние). В IE вы можете использовать событие propertychange
для документа
, а в последних версиях браузеров Mozilla и WebKit вы можете использовать общее событие DOMSubtreeModified
. Для других браузеров вам придется вернуться к опросу document.title
.
Обратите внимание, что я не смог протестировать это во всех браузерах, поэтому вам следует тщательно протестировать это перед использованием.
Наблюдатели за мутациями сегодня используются в большинстве браузеров. См. Для примера ответ Владимира Старкова. Возможно, вам понадобится что-то из следующего в качестве запасного варианта для старых браузеров, таких как 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();
}
};
}
};