我正在研究chrome扩展,我在onload处理程序中设置了window.title。但是,我正在修改的页面似乎也动态设置了文档标题。有大量的脚本链接在一起。我有什么方法可以阻止其他人修改document.title
或其任何变体,而不知道修改的来源是什么?或者,我是否可以通过快速方式查看更改的来源?
答案 0 :(得分:1)
查看how to listen for changes to the title element?的答案。值得注意的是:
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();
}
};
}
};
答案 1 :(得分:0)
这个SO answer提出了一种如何监听文档标题更改的技巧。
也许您可以使用该技术创建一个回调,只要其他脚本尝试更改标题,就会将标题更改回您想要的标题。
答案 2 :(得分:0)
我遇到了同样的问题,某些外部脚本被document.title = "..."
更改了页面标题
我为此制定了解决方案:
try {
window.originalTitle = document.title; // save for future
Object.defineProperty(document, 'title', {
get: function() {return originalTitle},
set: function() {}
});
} catch (e) {}