更改window.location原型以禁用某些重定向?

aff*_*ion 8 javascript greasemonkey prototype window.location

我正在尝试window.location使用Greasemonkey在文档的开头有选择地禁用它.

我不想完全禁用javascript,只是禁用一些使用javascript完成的重定向.它们看起来像这样:

window.location = "unwanted url";
Run Code Online (Sandbox Code Playgroud)

Bri*_*and 5

我认为这是不可能的。

  • 您无法覆盖的属性或方法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什么也不要做

我没主意...


Bro*_*ams 5

您无法更改window.location原型,因为这是 的“本机属性”window并且不可配置

在 Firefox (Greasemonkey) 上,如果您尝试覆盖它,则会出现如下错误:

类型错误:无法重新定义不可配置的属性“位置”

错误:权限被拒绝隐藏本机属性

...取决于你如何尝试。其他浏览器也会出现类似的错误。


要阻止这种重新定位,您需要根据具体情况干扰页面的 javascript。

有关适用于 Firefox 的一般方法,请参阅“停止执行 Javascript 函数(客户端)或调整它”。虽然它可能更容易,但取决于您的目标页面的确切代码。