2

在 Greasemonkey 中,我可以重写全局alert()函数:

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

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

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

4

1 回答 1

3

实际上,这有时只会在 Greasemonkey 中起作用。授权模式必须是none——我不建议这样做。正如您所发现的,意外触发该模式会导致脚本无法移植——以及超出此问题范围的其他罪过。

要使此代码在 Tampermonkey(以及 Greasemonkey 上)上工作,请使用unsafeWindow,如下所示:

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

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


或者,使用此答案中所示的脚本注入



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

于 2013-04-07T07:24:05.007 回答