是否可以让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,如果没有,是否有任何解决方法可以解决我的问题?
提前致谢。
答案 0 :(得分:24)
这可能有一些副作用,但我不确定究竟是什么,但你可以重新定义title
属性并使其不可写,这比密封或冻结整个文档更好仅影响title
Object.defineProperty(document, 'title', {
enumerable: false,
configurable: false,
writable: false,
value: document.title
});
这应该适用于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');
});
});