我正试图找到一种方法来检测Window是否已关闭,但事件是:
onbeforeunload和onunload仅在页面已完全加载时才会被调用。
基本上我正在尝试模拟模式弹出窗口的行为,也就是说,当弹出窗口打开时,主页面(开启者)通过覆盖透明div来冻结,当弹出窗口关闭时,在onunload事件中,该div被隐藏。
我的问题是如果弹出窗口的内容需要一些时间来加载,并且用户在完成加载之前关闭窗口,那么onunload事件永远不会被触发,因此,透明div仍然可见。
您是否知道我可以检测到页面是否被关闭,即使它尚未完成加载。
这是我的代码:
在父(开场)窗口中
点击链接时
popUpObj = window.open(url, 'ModalPopUp', opts);
popUpObj.focus();
LoadModalDiv();
显示和隐藏div的功能
此功能在父窗口中实现
function LoadModalDiv() {
var bcgDiv = document.getElementById("divBackground");
bcgDiv.style.display = "block";
}
function HideModalDiv() {
var bcgDiv = document.getElementById("divBackground");
bcgDiv.style.display = "none";
}
在子窗口(弹出窗口)
<script type="text/javascript">
function OnClose() {
if (window.opener != null && !window.opener.closed) {
window.opener.HideModalDiv();
}
}
function OnLoad() {
if (window.opener != null && !window.opener.closed) {
window.opener.LoadModalDiv();
}
}
window.onload = OnLoad;
window.onunload = OnClose;
</script>