重写全球警报()函数不Tampermonkey
问题描述:
工作在Greasemonkey的,我可以改写全球alert()
功能:重写全球警报()函数不Tampermonkey
window.alert = function() {...}
和它的作品在任何地方。
但是,在Tampermonkey(Chrome)中,它只能使用它自己的脚本。
为什么? 我可以让它在全球范围内工作吗?
答
实际上,这只会在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中以相同的方式工作。