12

我希望能够知道我打开的窗口何时被用户关闭。这是我尝试监控的代码:

<html>
  <head>
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.4.2.min.js"></script>
    <script type="text/javascript">
        window.document.onready = function () {
            document.getElementById('openWindow').onclick = function () {
                var windowref = window.open('tests2.html');
                windowref.onunload =  function () {
                    window.alert('hola!');
                };
            };
        };
  </script>
</head>
<body>
  <button id='openWindow'>Open Window</button>

</body>
</html>

我希望这会提醒“你好!” 在打开的窗口关闭后的原始窗口中window.open。相反,它会发出“hola!”的警报。在原始窗口中打开新窗口后立即使用window.open。为什么它会这样工作?有没有办法做我想做的事?

4

2 回答 2

29

该窗口首先加载一个空白页面,然后卸载该页面,从而引发该unload事件。
然后加载您的页面。尝试在事件触发时附加事件onload以避免这种情况。

简单的演示

document.getElementById('openWindow').onclick = function () {
      var windowref = window.open('tests2.html');
      windowref.onload = function() {
            windowref.onunload =  function () {
                window.alert('hola!');
            };
      }
};
于 2011-09-19T20:20:48.050 回答
1

窗口加载后尝试添加

document.getElementById('openWindow').onclick = function () {
    var windowref = window.open('tests2.html');
    windowref.window.onload = function(){  //wait til load to add onunload event
        windowref.window.onunload =  function () {
            window.alert('hola!');
        };
    }
};

JSBin 示例

于 2011-09-19T20:25:54.863 回答