为什么window.open(...).onunload = function(){...}无法正常工作?

Ste*_*ley 11 javascript javascript-events window.open window.onunload

我希望能够告诉我打开的窗口何时被用户关闭.这是我试图监控这个的代码:

<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>
Run Code Online (Sandbox Code Playgroud)

我希望这会提醒"hola!" 在打开的窗口window.open关闭后的原始窗口中.相反,它警告"hola!" 在打开新窗口后立即在原始窗口中window.open.它为什么这样工作?有办法做我想做的事吗?

Dig*_*ane 26

窗口首先加载空白页面,然后卸载页面,从而导致unload事件发生.
然后你的页面加载.尝试在onload事件触发时附加事件以避免这种情况.

简单的演示

document.getElementById('openWindow').onclick = function () {
      var windowref = window.open('tests2.html');
      windowref.onload = function() {
            windowref.onunload =  function () {
                window.alert('hola!');
            };
      }
};
Run Code Online (Sandbox Code Playgroud)