为什么全局变量突然可用于Greasemonkey和Tampermonkey脚本?

时间:2015-01-21 11:06:16

标签: greasemonkey tampermonkey

最近在编写用户脚本时,我发现页面上下文中的变量可用 console.log(window)未导致Tampermonkey和Greasemonkey都出错。

我很困惑。不能通过unsafeWindow访问全局变量吗?

1 个答案:

答案 0 :(得分:3)

全局变量仅在@grant none模式下可用。 As of Greasemonkey 2.0 (June 17, 2014), @grant none mode became the default. Tampermonkey很快跟进,以保持兼容性。

如果您从未习惯使用@grant,这似乎是最近(意外)的变化。

您现在应该始终使用the @grant directive,以便了解脚本的操作模式。

我也至少使用@grant GM_addStyle 推荐,除非在@grant none合适的极少数情况下。这避免了意外的冲突和副作用,并且最接近于脚本用于工作的方式以及仍然运行多少脚本引擎。 (也就是说,这样的脚本更可靠,更兼容跨平台。)

Greasemonkey处理@grant的方式现为a leading cause manymany problems