如何防止Firefox中的JavaScript关闭窗口/选项卡?

7

我正在使用Firebug调试一个网站。该网站打开一个窗口,执行一些操作,然后关闭它。这导致我失去了所有的Firebug网络历史记录。除了更改代码,是否有任何方法可以防止JavaScript在完成后关闭窗口?


我曾经遇到过完全相同的问题。最终,我在触发关闭的js代码处添加了一个断点,以便我可以检查到那一点为止的网络历史记录。 - beldaz
1
这让我非常生气。任何浏览器怎么能允许从网页执行这样的操作?!我想把事情烧起来。 - Andrew
2个回答

4
你可以重写open 方法,并添加一个 beforeunload 事件。请查看下面的带注释代码和书签小程序:
代码:
javascript:(function(w){
    var o = w.open;       /* Stores original `window.open` method */
    w.open = function() { /* Catches all window.open calls*/
        var x = o.apply(w, arguments); /* Calls original window.open */
        /* Bind beforeunload event */
        x.addEventListener('beforeunload',function(e){e.preventDefault()},true);
        return x;
    }
})(window);

书签工具:

javascript:(function(w){var o=w.open;w.open=function(){var x=o.apply(w,arguments);x.addEventListener('beforeunload',function(e){e.preventDefault()},true);return x;}})(window);

@ArsenZahray 网站是否包含在框架中?如果是这种情况,请将书签小工具末尾的 window 替换为 frames[0](即文档中的第一个框架)。如果网站包含多个框架,则可以循环遍历所有框架,并将此事件添加到其中。 - Rob W

2

我没有尝试过使用它,但是在 FF 中有一个设置可以让您做您想要的事情。

在 URL 栏中键入 about:config 并按 Enter 键。 在警告后,您将看到配置选项列表。 搜索 dom.allow_scripts_to_close_windows 并将其值设置为 false。


2
这在脚本创建的窗口上不起作用。尽管如此,对我来说似乎是最好的选择。 - Arsen Zahray

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