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

Der*_*rek 79 javascript browser

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

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

小智 81

window.open('', '_self', ''); window.close();
Run Code Online (Sandbox Code Playgroud)

这适合我.

  • 似乎在FF 8.0中不起作用.但是在所有其他浏览器中都有效.. (3认同)

Nic*_*ick 56

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

每次都有效!

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

开幕页面:

alert("No whammies!");
window.open("closer.htm", '_self');
Run Code Online (Sandbox Code Playgroud)

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

关闭页面:

<script type="text/javascript">
    window.close();
</script>
Run Code Online (Sandbox Code Playgroud)

太棒了啊?!

  • 看起来微软已经修复了IE10中的这个错误.有谁知道我们如何在IE10中实现这一目标? (9认同)

rvi*_*hne 53

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

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

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

  • 或者,甚至更简单:根本不要关闭窗口.如果您已完成,请将用户发送回您的主页或其他某种中心位置. (5认同)
  • @duskwuff,我们正在针对这些浏览器运行自动化测试。他们需要*关闭*。 (2认同)
  • @ouflak肯定你的测试框架有一些操作窗口的方法. (2认同)

小智 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){

            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

  • 你的代码就像一个魅力,但不幸的是,更多的人无法识别.拿我的upvote :-) (4认同)

小智 12

在body标签中:

<body onload="window.open('', '_self', '');">
Run Code Online (Sandbox Code Playgroud)

关闭窗口:

<a href="javascript:window.close();">
Run Code Online (Sandbox Code Playgroud)

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


Dan*_*ett 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>
Run Code Online (Sandbox Code Playgroud)

嵌套window.open是为了使IE不显示你要关闭此窗口提示.

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


jba*_*bey 7

出于安全原因,如果窗口是由JavaScript打开的,则只能在JavaScript中关闭窗口.要关闭窗口,您必须打开一个新窗口_self作为目标,它将覆盖您当前的窗口,然后关闭该窗口(您可以通过JavaScript打开它).

window.open('', '_self', '');
window.close();
Run Code Online (Sandbox Code Playgroud)


Mad*_*mah 7

window.open('', '_self', '').close();
Run Code Online (Sandbox Code Playgroud)

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


Har*_*mbe 6

这里:

<a href="javascript:window.opener='x';window.close();">Close</a>
Run Code Online (Sandbox Code Playgroud)

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


Viv*_*vek 5

由于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>
Run Code Online (Sandbox Code Playgroud)

javascript关闭当前窗口没有提示IE


Der*_*rek -2

我发现的最佳解决方案是:

this.focus();
self.opener=this;
self.close();
Run Code Online (Sandbox Code Playgroud)