需求: 从父窗口打开一个弹出窗口,当焦点从窗口移开时应该关闭它。即使打开了另一个应用程序窗口或将其置于焦点状态,也应该发生这种情况。
尝试的代码:
<body onBlur='javascript:window.close();'>
问题: 在弹出窗口的主体内单击会导致弹出窗口关闭。
兼容性: ie6及以上版本,火狐浏览器。
我从http://pro-thoughts.blogspot.com/2006/10/incorrect-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>
但这里也有一个问题,如果页面上有一个打印按钮,而且我点击打印,但取消了打印作业,则弹出窗口会关闭。
请问有人可以帮助我吗?