网页使用外部脚本:
<script src="script/alerts.js" type="text/javascript"></script>
在这个脚本文件中有一个我想修改/替换的功能。 该函数如下所示:
function SayHello(msg1, msg2){
alert(msg1);
alert(msg2;
// just saying hi and doing something i don't want to
}
我想把它改成这样的东西:
function SayHello(msg1, msg2){
// not saying hello
// but i'm doing everything i want to
}
如何在不使用unsafeWindow的情况下执行此操作?
注意:该函数必须在内容页面范围内执行,而不是在Greasemonkey沙箱中执行。
答案 0 :(得分:2)
就这么简单:
location.assign("javascript:void(SayHello = function () {})");
即使您需要使用任何GM_ *功能,它仍然有效。 (@grant)
答案 1 :(得分:0)
除非您在不安全的窗口中运行代码,否则无法对unsafeWindow
执行某些操作。
然而,你可以做的是重新定义方法,如:
SayHello = function (msg1, msg2){
// not saying hello
// but i'm doing everything i want to
}
它将用这个替换原来的功能。
你还应该记住,你不能只使用greasemonkey进入闭包,并且你不能在脚本第一次运行时替换已复制到局部变量的方法。