使document.title不可用于Javascript

使document.title不可用于Javascript,javascript,jquery,html,Javascript,Jquery,Html,是否可以使Javascript无法更改文档.标题(。)呢 我的问题是,在我的项目中,有一些Java脚本每1秒更改document.title,我希望title保持不变。不幸的是,我无法更改或删除这些JS文件。我试着想出一些变通办法,比如: function checkTitle() { if(document.title != oldTitle) document.title = oldTitle; } setInterval(checkTitle(), 100); 这似乎是一个好主意,但不幸

是否可以使Javascript无法更改
文档.标题(
)呢

我的问题是,在我的项目中,有一些Java脚本每1秒更改
document.title
,我希望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更改,如果没有,是否有解决问题的方法


提前感谢。

这可能会有一些副作用,但我不确定具体是什么,但您可以重新定义
title
属性并使其不可写,这比密封或冻结整个文档要好,因为它只影响
title

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


这应该适用于IE9及以上的所有浏览器,也可能适用于IE8,我还没有测试过,但我认为只有DOM节点可以在IE8中更改,并且不确定
文档
是否计数?

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

$(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');
    });
});

为什么你不能删除更改文档标题的部分?一个有趣的问题。更改页面标题/阻止此更改背后的逻辑是什么?出于好奇,你可以听听上面提到的propertychange,因为我的项目是使用Liferay Portal完成的。Liferay在每个页面中添加了一些JS文件来控制一些会话内容,但并不确切。事实上,我听说有一种方法可以更新这些文件,但这并不容易,目前我正在Liferay论坛上等待回应——但看起来好像没有人会回应。像这样(确实有副作用)->哇,太有趣了。对副作用也很好奇,但我想不出任何副作用!Document.title似乎是不相关的元素,因此它应该破坏任何内容。我会检查此解决方案并返回给您-谢谢。我也不能真正想到任何副作用,只是锁定文档属性听起来不像您通常想要做的事情,所以我添加了一个“免责声明”?在我的项目中真正进行测试之前,我决定将其标记为可接受答案,因为它看起来不那么明显,而且我在其他地方也没有看到:谢谢。只是绝对确定:如果我把这段代码放在一个JS中,并添加到每个页面(就像那些想要更改标题的JS文件一样),标题应该保持不变且不可触摸?@pzeszko-它应该,而且它会,只要上面的代码在脚本试图更改标题之前运行,这就假定您首先运行代码,但前提是它已经尽可能好了。例如,一个扩展或一个确定的用户可以很容易地覆盖它。