要求:弹出窗口将从父窗口打开,当窗口中的焦点丢失时,它将被关闭。 (即使打开另一个应用程序窗口或聚焦时也会发生这种情况。)
尝试过代码:
<body onBlur='javascript:window.close();'>
问题: 弹出窗口中的单击使弹出窗口关闭。
兼容性: ie6及以上,firefox。
我从 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>
但是这里也存在一个问题,如果页面中有打印按钮,如果点击打印&gt;然后取消打印作业,弹出窗口将关闭。
有人能帮助我吗...
答案 0 :(得分:1)
使用文档进行模糊事件
var win = window.open("URL");
$(window).blur(function() {
win.close();
});
答案 1 :(得分:1)
sathishkumar的回答中的小修正
1.我们需要将win
转换为jquery对象
2.在jqvariable上应用模糊事件,而不是window
3. this.close
在定义onblur
事件
var win = window.open("URL");
var jqwin = $(win);
$(jqwin).blur(function() {
this.close();
});
答案 2 :(得分:0)
你不能将onblur事件附加到BODY但是 你可以在窗口的Onblur事件上附加一个函数。
<script type="text/javascript">
function closeme()
{
window.close();
}
window.onblur=closeme;
</script>
由于您已编辑了您的问题,因此您可以获得更多帮助here