使 document.title 对于 Javascript 来说是不可触碰的
Making document.title untouchable for Javascript
是否可以使Javascript无法更改document.title
(<head><title> .. </title></head>
)?
我的问题是,在我的项目中,有一些javascript每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,如果没有,我的问题有什么解决方法吗?
提前谢谢。
这可能有一些副作用,但我不确定具体是什么,但您可以重新定义 title
属性并使其不可写,这比密封或冻结整个文档更好,因为它只影响title
Object.defineProperty(document, 'title', {
enumerable: false,
configurable: false,
writable: false,
value: document.title
});
小提琴
这应该适用于IE9及更高版本的所有浏览器,也许还有IE8,我还没有测试过,但我认为在IE8中只能更改DOM节点,并且不确定document
是否算数?
您可以将以下事件绑定到标题标签以防止更改自身:
$(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');
});
});
相关文章:
- 正在寻找比$(document).ready慢的$(window).load的替代方案
- document.open/document.write没有正确地清除chrome中的文档——这是chrome的错误吗
- 如何用更合适的内容替换document.write
- document.styleSheets不返回任何内容
- jQuery document.ready not working
- $(document).height()在刷新时随机化值(Safari 5.1.10)
- reactjs this.refs vs document.getElementById
- 如何通过adf中的document.getElementById获取inputText字段值
- window.opener.document在ie中不起作用
- contentWindow.document.body is null
- document.applet.method在Mounatin Lion上抛出safari 6+JDK7异常
- document.getElementById(“st”).click();不起作用
- document.title函数可以't设置它与php一起工作
- 如果 document.title 不存在,如何获取页面标题名称
- 未捕获的类型错误:document.title 不是一个函数,第 31 行
- 使 document.title 对于 Javascript 来说是不可触碰的
- Safari无法呈现$window.document.title
- 为什么HTML符号▶不工作在document.title
- 如何使用外部Javascript使用onclick事件来更改document.title
- 阻止移动版jQuery设置document.title