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閉じた後、元のウィンドウで。代わりに、「オラ!」と警告します。で新しいウィンドウを開いた直後の元のウィンドウで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 に答える