Javascript关闭IE6,IE7,IE8和Firefox没有确认框?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Javascript关闭IE6,IE7,IE8和Firefox没有确认框?相关的知识,希望对你有一定的参考价值。

假设,我想要一个链接或按钮,当用户单击它时,将关闭浏览器而不显示任何确认对话框。

它需要在Internet Explorer 6,7,8和Firefox中工作。

答案

我做了一些研究,发现如果没有通过javascript打开窗口/标签,或者如果标签页的历史页> 1,则无法关闭Firefox中的窗口/标签(即,因为浏览网页,后退按钮可以点击)。

Firefox中的方法:首先删除历史记录。然后你可以关闭窗口没有确认框。我没试过这个解决方案。我碰巧阅读了多个描述如何执行此操作的可靠页面。

Internet Explorer 6,7,8的解决方案。

在浏览器检测功能的帮助下:http://www.quirksmode.org/js/detect.html,这里是如何在没有确认框的情况下为多个IE版本关闭窗口。

if ((userBrowser.browser == "Explorer" && (userBrowser.version == "8" || userBrowser.version == "7"))) {
        window.open('', '_self', '');
        window.close();
    } else if ((userBrowser.browser == "Explorer" && userBrowser.version == "6")) {
        window.opener = null;
        window.close();
    } else {
        window.opener = '';
        window.close(); // attempt to close window first, show user warning message if fails
        alert("To avoid data corruption/loss. Please close this window immedietly.");
    }

我知道有些人可能认为使用浏览器检测不是一个好主意。此外,许多人认为强迫用户关闭窗口是件坏事。我同意这些想法。但是,我只是需要它,因为我们被要求做软件要求。

希望这可以帮助。

另一答案

这将是一个重大的安全漏洞。你将永远无法做到这一点。

但是,您可以关闭父级已打开的子窗口。假设你打开一个带有父窗口的弹出窗口,同一个父窗口可以有一个关闭孩子的按钮。从来没有浏览器。

另一答案

我认为这里的部分问题是你不清楚你在问题中的目标。根据您对Frankie的回答的评论,您似乎根本不需要关闭窗口,您只需要保护窗口中可用的内容。

这是我的建议:

  1. 根据(服务器端)超时终止登录会话。超时结束时,页面的重新加载应仅重定向到登录页面。
  2. 在客户端,定期检查超时条件并重定向到登录页面,或其他一些不需要保护的页面。

坦率地说,通常最好将用户留在您的网站上,直到他们想要关闭标签或以其他方式浏览。只需将它们重定向到不需要安全的登录页面,而不是试图强制关闭选项卡。

以上是关于Javascript关闭IE6,IE7,IE8和Firefox没有确认框?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我写的焦点图在IE6下强制关闭,打不开网页,我是用jquery写的,在IE7,IE8,FF下都正常!

JS代码判断IE6,IE7,IE8,IE9!

在Wordpress中显示IE8,IE7,IE6的浏览器升级警告

有趣的Javascript:只需一个JS让万恶的IE5IE6IE7IE8全都支持H5原生Canvas绘图(有演示demo)

CSS 如何针对IE6,IE7和IE8

CSS IE6,IE7,IE8的阴影和渐变填充