如何在Greasemonkey脚本中关闭Firefox标签页?

18

我有一个 Greasemonkey 的用户脚本,其中只有这一行代码...

window.close();

但是火狐浏览器不允许用户脚本关闭窗口(根据错误控制台中的错误消息报告)

这个问题是否有解决方法?

3个回答

31

你需要更改Firefox的配置设置(about:config),才能允许这样的操作。

步骤:

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

现在你的脚本可以使用 'window.close()' 关闭标签页了。

例如:

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

6
这会允许所有脚本关闭窗口吗?有没有一种方法只允许Greasemonkey脚本关闭窗口? 这样做是否允许所有脚本都能够关闭窗口?是否有一种方法仅允许Greasemonkey脚本关闭窗口? - Sandeep Datta
由于它是Firefox配置参数,我认为没有办法添加可信脚本源或类似的内容。如果您允许脚本关闭选项卡,则任何脚本都可以关闭选项卡。 - M.N

6

现在一些-猴子允许使用@grant选项正式解锁像window.close()这样的命令,而无需进入about:config。例如,在Tampermonkey中:

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

(后者的 授权 允许您重新将浏览器对焦到您的窗口。) 这将消除错误。

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


我添加了一个指向文档的直接链接。否则,答案应该是可以的,因为人们现在仍然会找到这个问题,所以应该有一个当代的答案。如果使用我提到的grant选项,就不会出现错误。 - DDRRSS
在 Violentmonkey 中运行良好。谢谢。 - mt025
无法与Greasemonkey一起使用,我不得不在“about:config”中将“dom.allow_scripts_to_close_windows”设置为“true”。 - baptx
从Greasemonkey 4.10.0开始,即使DOM值“dom.allow_scripts_to_close_windows”仍设置为“false”,@grant window.close已足以允许窗口关闭功能。 - March Ho
@MarchHo 我无法确认。对我来说不起作用。选项卡没有关闭。 - ygoe
显示剩余2条评论

4
自从Firefox将Greasemonkey代码视为外部网站上的脚本代码的相同特权后,无法仅允许Greasemonkey代码能够关闭窗口,而不允许普通脚本执行。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接