我正在尝试使用Greasemonkey在文档开头有选择性地禁用
window.location
。我不想完全禁用JavaScript,只是禁用一些使用JavaScript完成的重定向。它们看起来像这样:window.location = "unwanted url";
window.location
。我不想完全禁用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:无法重新定义不可配置属性“location”
以及
错误:拒绝访问阴影本机属性
...具体取决于您的尝试方式。其他浏览器也会给出类似的错误。
要阻止这种重定向,您需要逐个干预页面的 JavaScript。
有一个通用方法适用于 Firefox,请参见“停止执行 Javascript 函数(客户端)或调整它”。但基于您目标页面的确切代码,可能会更容易些。
虽然有点晚,但你可以简单地使用Object.prototype.watch
而无需删除整个脚本:
window.watch('location', function( attr ,_ , target){
if(target.indexOf('unwanted url') !== -1)return '#';
});