在 Greasemonkey 中,我可以重写全局alert()
函数:
window.alert = function() {...}
它可以在任何地方工作。
但是,在 Tampermonkey (Chrome) 中,它只适用于它自己的脚本。
为什么?我可以让它在全球范围内运作吗?
在 Greasemonkey 中,我可以重写全局alert()
函数:
window.alert = function() {...}
它可以在任何地方工作。
但是,在 Tampermonkey (Chrome) 中,它只适用于它自己的脚本。
为什么?我可以让它在全球范围内运作吗?
实际上,这有时只会在 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 中以相同的方式工作。