最近在编写用户脚本时,我发现页面上下文中的变量可用
console.log(window)
未导致Tampermonkey和Greasemonkey都出错。
我很困惑。不能通过unsafeWindow
访问全局变量吗?
答案 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 many,many problems。