我想在关闭子窗口时运行一个函数,但无法检查到window.closed

这是我的代码:

<button onclick='openChild(); ></button>

 <script language="JavaScript" type="text/javascript">

            function openChild(){
                var child_window = window.open('http://www.website.com','win1','toolbar=0,status=1,location=1,scrollbars=1,resizable=1,width=950,height=600');

                if(<?php echo $active?> ==0 ){
            setTimeout(function(child_window ){

                    child_window.close();
               }, 1000);
         }
  child_window.onunload =checkChild;

  var check_token = setInterval(checkChild, 500);
    }

 function checkChild() {
if (child_window && child_window.closed) {
    alert("Closed!");
clearInterval(check_token);
$.get("check.php", function(data) {});
location.reload();

}
   }

最佳答案

在您的checkChild()函数内部,变量childWindow不存在,但是由于您使用checkChild()作为事件处理程序,因此可以用childWindow关键字替换this

function openChild(){
    var child_window = window.open('http://www.website.com','win1','toolbar=0,status=1,location=1,scrollbars=1,resizable=1,width=950,height=600');

    if(<?php echo $active?> ==0 ){
      child_window.close();
    }
    child_window.onunload = function() {
        // this functions fires when closed
        alert('closed');
        $.get("check.php", function(data) {});
        location.reload();
    };
}

09-19 09:55