当焦点离开时如何关闭弹出窗口

jij*_*mas 5 html javascript popup

要求:将从父窗口打开一个弹出窗口,并且当窗口失去焦点时应将其关闭。(即使打开另一个应用程序窗口或成为焦点,也会发生这种情况)。

尝试过的代码: <body onBlur='javascript:window.close();'>

问题: 在弹出窗口主体内单击会导致弹出窗口关闭。

兼容性: ie6及以上、firefox。

我从http://pro-thoughts.blogspot.com/2006/10/in Correct-behavior-of-windowonblur.html 得到了解决方法

var active_element;  
var bIsMSIE;

function initiateSelfClosing() {  
  if (navigator.appName == "Microsoft Internet Explorer") {  
    active_element = document.activeElement;  
    document.onfocusout = closeWnd;  
    bIsMSIE = true;  
  }  
  else { window.onblur = closeWnd; }  
}

function closeWnd() {  
  if (window.opener != null) {  
    if (bIsMSIE && (active_element != document.activeElement)) {  
      active_element = document.activeElement;  
    }  
    else {  
      window.close();  
    }  
  }  
}  


<body onload="initiateSelfClosing()">  
</body>
Run Code Online (Sandbox Code Playgroud)

但这里也存在一个问题,如果页面中有一个打印按钮,并且如果我单击“打印”>然后取消打印作业,则弹出窗口将关闭。

有人可以帮我吗...

sat*_*mar 1

使用文档进行模糊事件

  var win = window.open("URL");
  $(window).blur(function() {
    win.close();
  });
Run Code Online (Sandbox Code Playgroud)