-1

网页使用外部脚本:

<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 沙箱中执行。

4

2 回答 2

2

就如此容易:

location.assign("javascript:void(SayHello = function () {})");

即使您需要使用任何 GM_* 函数,它也可以工作。(@授予)

于 2013-09-25T00:44:22.153 回答
0

unsafeWindow除非您在不安全的窗口中运行您的代码,否则您无法做某事。

但是,您可以做的是重新定义方法,例如:

SayHello = function (msg1, msg2){
    // not saying hello
    // but i'm doing everything i want to
}

它将用这个替换原来的函数。

您还应该记住,您不能仅使用greasemonkey 闯入闭包,并且您不能替换在脚本第一次运行时已复制到局部变量中的方法。

于 2013-09-24T22:02:14.470 回答