【问题标题】:How do I close a firefox tab from a greasemonkey script?如何从greasemonkey 脚本中关闭firefox 选项卡?
【发布时间】:2008-12-01 09:13:04
【问题描述】:

我有一个带有这一行代码的greasemonkey用户脚本...

window.close();

但 Firefox 不允许用户脚本关闭窗口(由错误控制台中的错误消息报告)

这个问题有解决办法吗?

【问题讨论】:

    标签: javascript firefox greasemonkey


    【解决方案1】:

    您需要更改 Firefox 的配置设置 (about:config) 以允许这样做。

    步骤:

    1. 转到地址栏并输入 about:config
    2. 转到参数dom.allow_scripts_to_close_windows
    3. 将其值设置为 true

    现在您的脚本可以使用 'window.close()' 关闭 TAB

    例如。

    function closeTab(){
        window.open('', '_self', '');
        window.close();
    } 
    

    【讨论】:

    • 但这不会允许 all 脚本关闭窗口吗?有没有办法只允许greasemonkey脚本关闭窗口?
    • 因为它是一个 Firefox 配置参数,我认为没有办法添加受信任的脚本源或类似的东西。如果您允许脚本关闭选项卡,Any 脚本可能会关闭选项卡。
    【解决方案2】:

    由于 Firefox 将 Greasemonkey 代码与外部网站上的脚本代码具有相同的特权,因此不可能只允许 Greasemonkey 代码能够关闭窗口,而不允许常规脚本。

    【讨论】:

      【解决方案3】:

      现在一些 -monkies 允许使用 @grant 选项来正式解锁诸如 window.close() 之类的命令而无需执行关于:配置。比如在Tampermonkey:

      // @grant window.close
      // @grant window.focus
      

      (后者 grant 允许您将浏览器重新聚焦在您的窗口上。) 这将消除错误。

      编辑:正如@baptx 在 cmets 中正确提到的,浏览器的安全选项也应设置为允许脚本关闭窗口。

      【讨论】:

      • 我添加了文档的直接链接。否则,答案应该没问题,因为现在人们仍然会找到这个问题,所以应该有一个当代的答案。如果使用我提到的 grant 选项,就不会出现错误。
      • 在 Violentmonkey 中运行良好。谢谢
      • 不适用于 Greasemonkey,我不得不在 about:config 中将 dom.allow_scripts_to_close_windows 设置为 true
      • @baptx 是的,确实如此。我更新了帖子以提及浏览器的设置;谢谢。
      • @DDRRSS 不是这个设置,没有必要使用 @grant window.close@grant window.focus,至少与 Greasemonkey
      猜你喜欢
      • 2020-06-02
      • 2021-10-02
      • 1970-01-01
      • 1970-01-01
      • 2020-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多