在Javascript中覆盖本机方法

时间:2009-07-16 03:41:30

标签: javascript native-methods overwrite

我正在对一些Javascript进行一些分析,我想保持启用javascript,但禁用所有alert()框和self.location重定向。

目前我正在使用正则表达式代理,但这看起来有点矫枉过正。

我可以覆盖一些原生方法,但不能覆盖Firefox中的其他方法。

window.alert = function('') { return null; }
alert('test!') // works as expected

但是,当我尝试类似地覆盖window.location =(这是方法调用window.assign()的别名)时,它不起作用

window.location.assign = function('') { return null; }
window.location.assign('#') // redirects :(

我已经尝试过设置Window.prototype.location.assign但是我得到了“无法修改WrappedNative的属性”异常。

用于细粒度JS控件的NoScript的替代品,还是可以覆盖某些Native JS方法?

1 个答案:

答案 0 :(得分:2)

suggested solution用于禁用alert可能有效。