2013-04-07 53 views
2

工作在Greasemonkey的,我可以改写全球alert()功能:重写全球警报()函数不Tampermonkey

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

和它的作品在任何地方。
但是,在Tampermonkey(Chrome)中,它只能使用它自己的脚本。

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

回答

2

实际上,这只会在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中以相同的方式工作。