更改window.location原型以禁用某些重定向
Change window.location prototype to disable certain redirects?
我试图在文档开头使用Greasemonkey选择性地禁用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。
请参阅"停止执行Javascript函数(客户端)或对其进行调整",了解在Firefox中工作的一般方法。尽管这可能要容易得多,但这取决于目标页面的确切代码。
太晚了,但您可以简单地执行此操作,而无需使用Object.prototype.watch
:删除整个脚本
window.watch('location', function( attr ,_ , target){
if(target.indexOf('unwanted url') !== -1)return '#';
});
相关文章:
- 警报中的window.location必须重定向到上一页
- 当用户在选择框中选择选项时,使用window.location.href重定向用户只会更改导航器中URL的最后一位
- 使用window.location.htm和匹配的URL数组(一个用于桌面,一个用于移动)将桌面网站重定向到移动
- 在Ajax响应后使用window.location.replaces不会立即重定向
- window.opener引用在Java 1.7.0_04-b20中从Applet重定向期间发生了更改,但在1.7.0_
- 使用window.location.href进行完全重定向
- JQuery Mobile,通过window.location重定向可阻止页面显示事件
- window.location重定向没有'我不在IE8上工作
- 如何在HTML、JS中重定向,如果用户关闭“;window.open()"-对话
- 是在window.location重定向后调用的垃圾收集器
- window.location.href 不起作用,无法重定向
- window.location.href 不会重定向到其他域
- 从 window.open()'ed 窗口获取内容后重定向
- JavaScript window.location 不会重定向到其他页面
- 在 POST ajax 处理程序中更改 window.location 会发出新的 ajax 调用,而不是重定向
- window.location.href未重定向
- 使用window.location.replace重定向不起作用
- Javascript window.location.href重定向不起作用
- 更改window.location原型以禁用某些重定向
- Window.location.htm在默认ngRoute重定向后丢失