93

如何关闭浏览器窗口而不收到是否要关闭此窗口提示?

使用该window.close();功能时出现提示。

4

18 回答 18

88
window.open('', '_self', ''); window.close();

这对我有用。

于 2010-04-28T14:57:49.010 回答
61

不允许脚本关闭用户打开的窗口。这被认为是一种安全风险。尽管它没有任何标准,但所有浏览器供应商都遵循这一点(Mozilla 文档)。如果在某些浏览器中发生这种情况,这是一个安全漏洞(理想情况下)会很快得到修补。

这个问题的答案中的任何黑客都不再有效,如果有人想出另一个肮脏的黑客,最终它也会停止工作。

我建议您不要为此浪费精力,而是采用浏览器为您提供的非常有用的方法——在您看似崩溃他们的页面之前询问用户。

于 2014-07-20T19:45:21.987 回答
58

我的朋友......有一种方法,但“hack”并没有开始描述它。您必须基本上利用 IE 6 和 7 中的错误。

每次都有效!

而不是调用window.close(),重定向到另一个页面。

打开页面:

alert("No whammies!");
window.open("closer.htm", '_self');

重定向到另一个页面。这会欺骗 IE,让您关闭此页面上的浏览器。

关闭页面:

<script type="text/javascript">
    window.close();
</script>

厉害吧?!

于 2009-09-11T16:54:15.170 回答
33

这是我用来在没有提示或警告的情况下关闭浏览器的 Javascript 函数,它也可以从 Flash 调用。它应该在 html 文件中。

    function closeWindows() {
         var browserName = navigator.appName;
         var browserVer = parseInt(navigator.appVersion);
         //alert(browserName + " : "+browserVer);

         //document.getElementById("flashContent").innerHTML = "<br>&nbsp;<font face='Arial' color='blue' size='2'><b> You have been logged out of the Game. Please Close Your Browser Window.</b></font>";

         if(browserName == "Microsoft Internet Explorer"){
             var ie7 = (document.all && !window.opera && window.XMLHttpRequest) ? true : false;  
             if (ie7)
             {  
               //This method is required to close a window without any prompt for IE7 & greater versions.
               window.open('','_parent','');
               window.close();
             }
            else
             {
               //This method is required to close a window without any prompt for IE6
               this.focus();
               self.opener = this;
               self.close();
             }
        }else{  
            //For NON-IE Browsers except Firefox which doesnt support Auto Close
            try{
                this.focus();
                self.opener = this;
                self.close();
            }
            catch(e){

            }

            try{
                window.open('','_self','');
                window.close();
            }
            catch(e){

            }
        }
    }
于 2013-05-07T06:54:12.820 回答
12

这适用于 Chrome 26、Internet Explorer 9 和 Safari 5.1.7(使用帮助页面,ala Nick 的回答):

<script type="text/javascript">
    window.open('javascript:window.open("", "_self", "");window.close();', '_self');
</script>

嵌套window.open是为了让IE不显示你要关闭这个窗口的提示。

不幸的是,不可能让 Firefox 关闭窗口。

于 2013-04-10T05:37:34.990 回答
11

在正文标签中:

<body onload="window.open('', '_self', '');">

要关闭窗口:

<a href="javascript:window.close();">

在 Safari 4.0.5、FF for Mac 3.6、IE 8.0 和 FF for Windows 3.5 上测试

于 2010-12-13T18:42:05.560 回答
7

出于安全原因,只有在 JavaScript 中打开的窗口才能在 JavaScript 中关闭。为了关闭窗口,您必须打开一个_self以目标为目标的新窗口,这将覆盖您当前的窗口,然后关闭该窗口(您可以这样做,因为它是通过 JavaScript 打开的)。

window.open('', '_self', '');
window.close();
于 2011-08-31T20:04:26.587 回答
7

window.open('', '_self', '').close();

抱歉在这里有点晚了,但我找到了解决方案,至少对于我的情况。在 Safari 11.0.3 和 Google Chrome 64.0.3282.167 上测试

于 2018-02-18T17:53:24.033 回答
6

由于 IE 中的安全增强功能,您无法关闭窗口,除非它是由脚本打开的。所以解决这个问题的方法是让浏览器认为这个页面是使用脚本打开的,然后关闭窗口。下面是实现。

试试这个,它就像一个魅力!
javascript在不提示IE的情况下关闭当前窗口

<script type="text/javascript">
function closeWP() {
 var Browser = navigator.appName;
 var indexB = Browser.indexOf('Explorer');

 if (indexB > 0) {
    var indexV = navigator.userAgent.indexOf('MSIE') + 5;
    var Version = navigator.userAgent.substring(indexV, indexV + 1);

    if (Version >= 7) {
        window.open('', '_self', '');
        window.close();
    }
    else if (Version == 6) {
        window.opener = null;
        window.close();
    }
    else {
        window.opener = '';
        window.close();
    }

 }
else {
    window.close();
 }
}
</script>

javascript在不提示IE的情况下关闭当前窗口

于 2013-09-18T04:40:39.437 回答
6

这里

<a href="javascript:window.opener='x';window.close();">Close</a>

你需要设置window.opener一些东西,否则它会抱怨。

于 2008-09-11T23:04:05.290 回答
2
window.opener=window;
window.close();
于 2009-04-03T09:35:44.497 回答
2

创建一个 JavaScript 函数

<script type="text/javascript">
    function closeme() {
        window.open('', '_self', '');
        window.close();
    }
</script>

现在编写这段代码并调用上面的 JavaScript 函数

<a href="Help.aspx" target="_blank" onclick="closeme();">Help</a>

或者简单地说:

<a href="" onclick="closeme();">close</a>
于 2012-12-17T12:30:51.830 回答
2

这将起作用:

<script type="text/javascript">
function closeWindowNoPrompt()
{
window.open('', '_parent', '');
window.close();
}
</script>
于 2016-02-11T09:50:36.053 回答
1

在我的情况下,以下代码被嵌入到一个 php 文件中。

var PreventExitPop = true;
function ExitPop() {
  if (PreventExitPop != false) {
    return "Hold your horses! \n\nTake the time to reserve your place.Registrations might become paid or closed completely to newcomers!"
  }
}
window.onbeforeunload = ExitPop;

所以我打开控制台并写下以下内容

PreventExitPop = false

这解决了问题。因此,找出 JavaScript 代码并找到变量并将它们分配给适当的“值”,在我的情况下是“假”

于 2017-04-17T13:11:53.493 回答
0

浏览器抱怨是因为您使用 JavaScript 关闭了一个不是用 JavaScript 打开的窗口,即window.open('foo.html');.

于 2008-09-11T23:05:47.547 回答
0

将以下代码放在 ASPX 中。

<script language=javascript>
function CloseWindow() 
{
    window.open('', '_self', '');
    window.close();
}
</script>

将以下代码放在按钮单击事件后面的代码中。

string myclosescript = "<script language='javascript' type='text/javascript'>CloseWindow();</script>";

Page.ClientScript.RegisterStartupScript(GetType(), "myclosescript", myclosescript);

如果您在关闭之前没有任何处理,那么您可以直接将以下代码放入 ASPX 本身的按钮单击标记中。

OnClientClick="CloseWindow();"

希望这可以帮助。

于 2014-11-11T11:44:23.460 回答
-2

我找到的最佳解决方案是:

this.focus();
self.opener=this;
self.close();
于 2008-09-11T23:00:21.320 回答
-3

我将发布此内容,因为这是我目前用于我的网站的内容,它在 Google Chrome 和 IE 10 中都可以使用,而不会收到任何弹出消息:

<html>
    <head>
    </head>
    <body onload="window.close();">
    </body>
</html>

我的网站上有一个函数,我想运行它来将开/关变量保存到会话,而不直接进入新页面,所以我只打开一个小弹出网页。然后该网页会立即使用该onload="window.close();"功能自行关闭。

于 2015-10-08T14:23:06.943 回答