4

我正在开发一个 chrome 扩展,我在 onload 处理程序中设置了 window.title 。不过,我正在修改的页面似乎也动态设置了文档标题。有大量的脚本被链接。我有什么办法可以阻止其他人修改document.title或其任何变体,而不知道修改来自哪里?或者,有没有一种快速的方法可以让我看到变化来自哪里?

4

3 回答 3

3

我有同样的问题,一些外部脚本改变了我的页面标题document.title = "..."

我已经为此制定了自己的解决方案:

try {
    window.originalTitle = document.title; // save for future
    Object.defineProperty(document, 'title', {
        get: function() {return originalTitle},
        set: function() {}
    });
} catch (e) {}
于 2019-06-20T09:04:40.087 回答
1

查看如何监听标题元素更改的答案?. 尤其:

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();
            }
        };
    }
};
于 2013-08-13T17:32:29.743 回答
0

这个SO answer提出了一种如何监听文档标题更改的技术。

也许您可以使用该技术创建一个回调,将标题更改回您想要的任何内容,只要其他脚本尝试更改它。

于 2013-08-14T06:19:22.457 回答