如何防止任何iframe或任何其他脚本在顶部窗口更改文档的标题
How to prevent any iframe or any other script to change title of document in the top window?
通常,我只是删除并重新定义title属性,如以下代码:
if (delete document.title) {
Object.defineProperty(document, 'title', {
get: getter,
set: setter,
enumerable: true,
configurable: false
});
}
然而,我发现有些页面仍然可以使用下面的代码来更改标题。
$(window.top.document.head).find('title').text('New Title')
有什么方法可以预防吗?
谢谢,
将观察者与title元素挂钩。我在下面修改了MDN的例子:
// select the target node
var target = document.getElementsByTagName("title");
console.log(target[0]);
// create an observer instance
var observer = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
alert("Title changed!");
// Treat the mutation here. Use mutation.type to see what happened.
});
});
// configuration of the observer:
var config = { attributes: true, childList: true, characterData: true };
// pass in the target node, as well as the observer options
observer.observe(target[0], config);
function changeTitle(){
document.title = "Something else";
}
<!DOCTYPE html>
<html><head><meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>A test</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script src="test.js"></script>
</head>
<body>
<a href="" onclick="changeTitle();">Change title</a>
</body></html>
你试过吗?:
$("head title").bind("DOMSubtreeModified", function(e){ /* switch back to original title*/});
相关文章:
- 如何使用AngularJS在点击身体内部任何位置时显示弹出窗口
- 如果用户不关闭弹出窗口'没有提供任何回应
- IE窗口失去了对任何XMLHttpRequest启动Angular应用程序的关注
- jQuery-在窗口滚动上运行一个函数,没有任何延迟
- 确定是否在不使用任何全局变量的情况下加载了窗口
- JQuery / JS:检测用户的滚动尝试,没有任何窗口溢出滚动到
- 禁用任何类型的浏览器窗口滚动
- 除了屏幕之外,CSS 值是否有任何方法响应窗口宽度@media
- 我可以使用 JavaScript 或任何其他技术根据用户输入将焦点切换到窗口或选项卡上吗?
- Javascript的window.open函数在ajax请求之后避免任何弹出窗口阻止程序
- 当在窗口中的任何位置单击选择框时,如何获得选择框关闭事件
- 谷歌地图 3 :当任何标记点击相同的信息窗口打开
- 在页面完成加载后立即使用 jQuery 创建一个弹出窗口,而无需按下任何按钮
- 想要关闭弹出窗口并在控制器上执行 PHP 脚本后重定向到相应的页面,没有任何事件
- 在客户端JavaScript中,除了窗口之外的任何元素都可以获得调整大小事件
- 是否有任何方法可以检测IE8中该窗口当前处于活动状态
- 有没有办法在不渲染任何其他 js 文件的情况下在 rails 控制器方法中发出警报/弹出窗口
- 如何使用jquery/irame/或任何其他东西在domain-1上创建带有domain-2内容的弹出窗口
- 是否有任何方法/解决方法可以使用open方法“window.open”关闭JavaScript尚未打开的窗口
- 当我点击这个树的任何项目时,如何创建一个弹出窗口