我看到some code使用此设置来激活沙箱:
@grant sandbox
当我在Firefox中运行以下基本Greasemonkey脚本时:
// ==UserScript==
// @name Test
// @namespace user12345678
// @include http://example.com
// @version 1
// @grant sandbox
// ==/UserScript==
console.log(window.toString());
沙盒似乎已经设置好了:
[object XrayWrapper [object Window]]
...与您使用@grant none
时不同:
[object Window]
它似乎与添加unsafeWindow
或GM_log
的工作方式相同,但我似乎无法找到有关此in the documentation的任何内容(是的,我已搜索过)。我甚至用一些胡言乱语来测试它:
@grant randominvalidsetting34234239482389482394
这与将@grant sandbox
或Greasemonkey函数作为值具有相同的效果。
如果它不在文档中,它实际上是否有效?如果不是,为什么它似乎有用?
答案 0 :(得分:2)
你在哪里听到的?不过,这是真的,但我不推荐它。
来自the @grant
documentation(不是问题中的链接):
有效值是您希望授予脚本访问权限的GM_前缀值的名称。
(加none
加上unsafeWindow
。)
虽然使用sandbox
会起作用,但现在,我更喜欢一个更“未来证明”的值,EG GM_addStyle
。
从Greasemonkey's source code (now superceded)可以看到,除非脚本在grant none
模式下运行,否则它始终是沙箱(wrapped in an XPCNativeWrapper),因此您获得[object XrayWrapper [object Window]]
。
这意味着除了none
之外的任何@grant
值都将激活沙箱, for Greasemonkey,现在,但不能保证始终工作相同Greasemonkey,Scriptish,Tampermonkey等的方法。所以使用一个已知的有效值来激活你的沙盒。
(为了获得最大的便携性并消除“定时炸弹代码”,我建议始终使用沙箱。)