如何防止脚本更改window.location或在当前页面上重新加载?

问题描述:

我想阻止第三方脚本改变window.location和/或用Javascript重新加载当前页面。有没有办法监视位置更改或窗口重新加载事件并取消它们。我无法控制JavaScript库,因此我需要在关键操作期间临时阻止页面重新加载。我不想阻止用户重新加载页面,只是其他脚本。欢迎jQuery解决方案。如何防止脚本更改window.location或在当前页面上重新加载?

谢谢!

编辑:该解决方案只需要在Firefox中工作。

+0

如果您不信任脚本,您可能不应该包含它。否则,它可以监视用户,提醒信息,加载其他第三方脚本等等。 – Kobi 2011-02-13 08:01:42

+0

@Kobi - 我相信它只是喜欢在不合时宜的时间刷新页面的脚本,就像我的脚本所做的ajax调用或ajaxed文件上传一样。 – 2011-02-13 08:09:34

为防止reload()你可以做这样的事情:

var canReload = true; 
var realReload = window.reload; 
window.reload = function() { 
    if (canReload) { 
    realReload(); 
    } 
} 

基本上覆盖reload功能,用自己的。我不确定可以使用属性分配完成相同的操作(其中设置了window.location)。您可以查看Firefox的自定义getter/setter(__defineSetter__)函数,并为windowlocation属性创建一个setter。