如何防止脚本更改window.location或在当前页面上重新加载?
问题描述:
我想阻止第三方脚本改变window.location和/或用Javascript重新加载当前页面。有没有办法监视位置更改或窗口重新加载事件并取消它们。我无法控制JavaScript库,因此我需要在关键操作期间临时阻止页面重新加载。我不想阻止用户重新加载页面,只是其他脚本。欢迎jQuery解决方案。如何防止脚本更改window.location或在当前页面上重新加载?
谢谢!
编辑:该解决方案只需要在Firefox中工作。
答
为防止reload()
你可以做这样的事情:
var canReload = true;
var realReload = window.reload;
window.reload = function() {
if (canReload) {
realReload();
}
}
基本上覆盖reload
功能,用自己的。我不确定可以使用属性分配完成相同的操作(其中设置了window.location
)。您可以查看Firefox的自定义getter/setter(__defineSetter__
)函数,并为window
的location
属性创建一个setter。
如果您不信任脚本,您可能不应该包含它。否则,它可以监视用户,提醒信息,加载其他第三方脚本等等。 – Kobi 2011-02-13 08:01:42
@Kobi - 我相信它只是喜欢在不合时宜的时间刷新页面的脚本,就像我的脚本所做的ajax调用或ajaxed文件上传一样。 – 2011-02-13 08:09:34