【问题标题】:Why does "@grant randominvalidsetting" activate the sandbox?为什么“@grant randominvalidsetting”会激活沙箱?
【发布时间】:2013-10-16 12:56:23
【问题描述】:

我看到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]

它似乎与添加unsafeWindowGM_log 一样工作,但我似乎找不到任何关于此in the documentation 的信息(是的,我已经搜索过了)。我什至用一些胡言乱语对其进行了测试:

@grant randominvalidsetting34234239482389482394

这与将 @grant sandbox 或 Greasemonkey 函数作为值具有相同的效果。

如果它不在文档中,它真的有效吗?如果不是,为什么它似乎有效?

【问题讨论】:

    标签: javascript greasemonkey


    【解决方案1】:

    你从哪里听到的?不过,这是真的,但我不推荐它。

    来自the @grant documentation(不是问题中的链接):

    有效值是您希望脚本被授予访问权限的那些带有 GM_ 前缀的值的名称。

    (加上none,加上unsafeWindow。)

    虽然使用sandbox 会起作用,但目前,我更喜欢一个更“面向未来”的值,例如GM_addStyle

    Greasemonkey's source code (now superceded) 可以看出,除非脚本在grant none 模式下运行,否则它始终是沙盒(wrapped in an XPCNativeWrapper),因此您得到了[object XrayWrapper [object Window]]

    这意味着除了 none 之外的任何东西都将激活沙箱,对于 Greasemonkey,目前,但不能保证对于 Greasemonkey 始终以相同的方式工作, Scriptish、Tampermonkey 等。因此,请使用已知的有效值之一来激活您的沙箱。

    (为了获得最大的可移植性和消除“定时炸弹代码”,我建议始终使用沙箱。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-31
      • 1970-01-01
      • 1970-01-01
      • 2017-05-15
      • 1970-01-01
      • 2012-12-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多