由于在脚本中使用了 window.close(), 当前非弹出窗口在最新版本的chrome和firefox里总是不能关闭,而在 IE中是可以关闭的 。
其次,window.close() 怎么理解呢?
由 https://developer.mozilla.org/en-US/docs/Web/API/window.close 可知:
Closes the current window, or the window on which it was called.
When this method is called, the referenced window
is closed.
This method is only allowed to be called for windows that were opened by a script using thewindow.open()
method. If the window was not opened by a script, the following error appears in the JavaScript Console: Scripts may not close windows that were not opened by script.
window.open()
This example demonstrates how to use this method to close a window opened by script callingwindow.open()
.
<script type="text/javascript"> //Global var to store a reference to the opened window var openedWindow; function openWindow() { openedWindow = window.open('moreinfo.htm'); } function closeOpenedWindow() { openedWindow.close(); } </script>
When you call the window
object’s close()
method directly, rather than calling close()
on a window
instance, the browser will close the frontmost window, whether your script created that window or not.
<script type="text/javascript"> function closeCurrentWindow() { window.close(); } </script>
在某些实际应用中,window.close() and self.close() 是不能关闭非弹出窗口(opener=null及非window.open()打开的窗口)。
方案一【推荐,亲身测试有效!!】:
function closeWindows() { var browserName = navigator.appName; var browserVer = parseInt(navigator.appVersion); //alert(browserName + " : "+browserVer); //document.getElementById("flashContent").innerHTML = "<br> <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){ } } }
方案二:
<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>