JavaScript - 如何在页面尚未完全加载之前检测Window是否已关闭

时间:2015-10-12 23:47:49

标签: javascript asp.net javascript-events page-lifecycle

我正试图找到一种方法来检测Window是否已关闭,但事件是:

onbeforeunloadonunload仅在页面已完全加载时才会被调用。

基本上我正在尝试模拟模式弹出窗口的行为,也就是说,当弹出窗口打开时,主页面(开启者)通过覆盖透明div来冻结,当弹出窗口关闭时,在onunload事件中,该div被隐藏。 enter image description here

我的问题是如果弹出窗口的内容需要一些时间来加载,并且用户在完成加载之前关闭窗口,那么onunload事件永远不会被触发,因此,透明div仍然可见。

enter image description here

enter image description here

您是否知道我可以检测到页面是否被关闭,即使它尚未完成加载。

修改

这是我的代码:

在父(开场)窗口中

点击链接时

 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>

0 个答案:

没有答案