如何在未收到“是否要关闭此窗口”提示的情况下关闭浏览器窗口?

时间:2008-09-11 22:59:39

标签: javascript browser

如何在未收到是否要关闭此窗口提示的情况下关闭浏览器窗口?

当我使用window.close();函数时会出现提示。

18 个答案:

答案 0 :(得分:76)

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

这适合我。

答案 1 :(得分:53)

我的朋友......有一种方法,但“黑客”并未开始描述它。你必须基本上利用IE 6中的一个错误。 7.

每次都有效!

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

打开页面:

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

重定向到另一个页面。这让IE愚弄让你关闭这个页面上的浏览器。

关闭页面:

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

真棒啊?!

答案 2 :(得分:46)

脚本不允许关闭用户打开的窗口。这被视为安全风险。虽然它没有任何标准,但所有浏览器供应商都遵循此标准(Mozilla docs)。如果在某些浏览器中发生这种情况,那么(理想情况下)会很快修补安全漏洞。

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

我建议你不要浪费精力去争取这个,并采用浏览器如此有用的方法 - 在看似崩溃他们的页面之前询问用户

答案 3 :(得分:31)

这是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){

            }
        }
    }

答案 4 :(得分:12)

在正文标记中:

<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

答案 5 :(得分:11)

这适用于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关闭窗口是不可能的。

答案 6 :(得分:7)

出于安全原因,只有在JavaScript打开的情况下才能在JavaScript中关闭窗口。要关闭窗口,您必须打开一个以_self为目标的新窗口,它将覆盖您当前的窗口,然后关闭该窗口(您可以通过JavaScript打开它之后执行此操作)。

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

答案 7 :(得分:6)

来自here

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

您需要将window.opener设置为某个内容,否则会抱怨。

答案 8 :(得分:5)

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

试试这个,它就像一个魅力! 的 javascript close current window without prompt 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 close current window without prompt IE

答案 9 :(得分:4)

&#13;
&#13;
window.open('', '_self', '').close();
&#13;
&#13;
&#13;

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

答案 10 :(得分: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>

答案 11 :(得分:1)

window.opener=window;
window.close();

答案 12 :(得分:0)

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

答案 13 :(得分:0)

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

this.focus();
self.opener=this;
self.close();

答案 14 :(得分: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();"

希望这有帮助。

答案 15 :(得分:0)

这将有效:

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

答案 16 :(得分:0)

在我的情况下,以下代码嵌入到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代码并找到变量并将它们分配给适当的&#34;值&#34;在我的情况下是&#34;假&#34;

答案 17 :(得分:-2)

我将发布这个,因为这是我目前用于我的网站,它可以在谷歌浏览器和IE 10中使用,而不会收到任何弹出消息:

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

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