使document.title无法访问Javascript

时间:2015-01-08 19:01:20

标签: javascript jquery html

是否可以让document.title<head><title> .. </title></head>)无法更改Javascript?

我的问题是,在我的项目中,有一些javascripts每1秒更改document.title ,我希望标题保持不变。不幸的是,我无法更改或删除这些JS文件。我试过想办法解决这个问题:

function checkTitle() {
if(document.title != oldTitle)
document.title = oldTitle;
}
setInterval(checkTitle(), 100);

这似乎是一个好主意,但不幸的是,我也有计数器在我的网站上显示计时器。我的整个代码看起来像这样:

var ticks = 0;

function update() {
    if(ticks % 1000 == 0) {
    ...update timer and some other stuff...
    }
    ticks+=100;
    if(document.title != oldTitle)
    document.title = oldTitle;
}
setInterval(update, 100);

此类代码在+ - 100秒后开始减速并且我的计时器肯定不会每1秒更新一次。

所以问题是:是否有可能使html元素(..)无法更改为javascript,如果没有,是否有任何解决方法可以解决我的问题?

提前致谢。

2 个答案:

答案 0 :(得分:24)

这可能有一些副作用,但我不确定究竟是什么,但你可以重新定义title属性并使其不可写,这比密封或冻结整个文档更好仅影响title

Object.defineProperty(document, 'title', {
  enumerable: false,
  configurable: false,
  writable: false,
  value: document.title
});

FIDDLE

这应该适用于IE9及以上的所有浏览器,也许IE8,我还没有测试过,但我认为只有IE8中的DOM节点可以更改,而且不确定document是否重要?

答案 1 :(得分:1)

您可以将以下事件绑定到标题标记,以防止自行更改:

$(document).ready(function() {
    $('title').bind('DOMSubtreeModified propertychange', function() {
        var title = $('title');
        if(title.text() != 'old title')
        {
            alert('title changed');
        }
    });

    $('a').bind('click', function() {
        $('title').text('new title');
    });
});