重写全局alert()函数在Tampermonkey中不起作用

时间:2013-04-07 06:04:12

标签: javascript greasemonkey alert tampermonkey

在Greasemonkey中,我可以用:

重写全局alert()函数
window.alert = function() {...}

它可以在任何地方使用。
但是,在Tampermonkey(Chrome)中,它只适用于它自己的脚本。

为什么呢? 我可以让它在全球范围内运作吗?

1 个答案:

答案 0 :(得分:3)

实际上,这只会在Greasemonkey中有效。 grant mode必须是none - 我建议反对。正如您所发现的那样,意外地绊倒该模式会导致不可移植的脚本 - 以及超出此问题范围的其他罪行。

要使此代码适用于Tampermonkey(以及Greasemonkey),请使用unsafeWindow,如下所示:

// ==UserScript==
// @name     _YOUR_SCRIPT_NAME
// @include  http://YOUR_SERVER.COM/YOUR_PATH/*
// @grant    unsafeWindow
// ==/UserScript==

unsafeWindow.alert = function() {...}


或者,使用脚本注入,如this answer所示。



@grant unsafeWindow指令适用于Greasemonkey - 恢复沙箱并允许使用unsafeWindow。这使得同一个脚本在Tampermonkey和Greasemonkey中的工作方式相同。