我正在尝试window.location
在文档开头使用 Greasemonkey 选择性地禁用 。
我不想完全禁用 javascript,只是禁用一些使用 javascript 完成的重定向。它们看起来像这样:
window.location = "unwanted url";
我正在尝试window.location
在文档开头使用 Greasemonkey 选择性地禁用 。
我不想完全禁用 javascript,只是禁用一些使用 javascript 完成的重定向。它们看起来像这样:
window.location = "unwanted url";
我不认为这是可能的。
window.location
(静默失败)location.__proto__ = Something.prototype
location.constructor.prototype
基本上是Object.prototype
__definesetter__
默默地失败Object.defineProperty
给出一个错误,例如,TypeError: Cannot redefine property: href
delete window.location
并且delete window.location.href
什么也不做我没主意了...
您不能更改window.location
原型,因为这是一个“原生属性”,window
并且它是不可配置的。
在 Firefox (Greasemonkey) 上,如果您尝试覆盖它,您将收到如下错误:
TypeError:无法重新定义不可配置的属性“位置”
和
错误:阴影本机属性的权限被拒绝
...取决于您如何尝试。其他浏览器给出类似的错误。
要阻止这种重定位,您需要根据具体情况干预页面的 javascript。
有关适用于 Firefox 的一般方法,请参阅“停止执行 Javascript 函数(客户端)或对其进行调整” 。虽然它可能会容易得多,具体取决于您的目标页面的确切代码。
为时已晚,但您可以简单地做到这一点,而无需删除整个脚本Object.prototype.watch
:
window.watch('location', function( attr ,_ , target){
if(target.indexOf('unwanted url') !== -1)return '#';
});