42457


皆様いつも御世話になっております。  
JQuery・JavaScriptのいづれかで、自画面が閉じられるイベントの察知方法を教えてくださいませんか？  
この察知を行った中で

[code]

    //親画面で無効化したイメージボタンを有効化
    window.opener.$(".cdsrch").prop("disabled", false);
    
[/code]

を達成したいです。

あるデータ受付用の画面はTableの明細を有しており、その各々1列目にコード検索画面を開くためのボタンを配置しています。この押下をもって子画面イメージのコード検索画面をJSでwindow.openしています。  
その際、元画面の全明細の例のボタンをdisableすることで、子画面が2つ以上呼ばれないような工夫を行っています。  
子画面側である程度の動作（リストボックスからの選択）が行われれば、当該子画面を閉じると同時に元画面でdisableにしたボタンを再度有効化しているのが現況です。  
これ故．．．  
現況は、コード検索の子画面を右上×ボタンで閉じられてしまうと、親画面のdisableにしたボタンが有効に戻っていない！という状態です。

**_PS_**  
そもそも親画面のJQueryで、子画面が閉じられたら？という察知を図るべきなのでしょうか？  
その察知方法も分かりませんが．．．．

ご見解を頂けましたら幸いです、よろしくお願い致します。


CC BY-SA 3.0
2018-03-17T03:47:22.160
42452
2018-03-18T13:35:58.040
2018-03-17T07:46:57.833
76
25696
question
javascript jquery
画面が閉じられるイベントの察知方法を教えてください。


`unload`イベントが使えると思います。  
以下は実装サンプルです。

[code]

    // 子画面
    $(window).on('unload', function() {
        window.opener.exports.onChildWindowClosed();
    });
    
    // 親画面
    window.exports = {
        onChildWindowClosed: function() {
            $('.cdsrch').prop('disabled', false);
        }
    };
    
[/code]


CC BY-SA 3.0
2018-03-17T07:28:26.407
42457
2018-03-17T07:28:26.407
9608
42452
answer


参考までに、window.open時に親側でイベント登録のサンプルコードを書いてみました。  
（IEでは動作確認していませんので参考まで。）

[code]

    <script type="text/javascript">
        var co_window = window.open('test.html','test','width=600,height=600');
        co_window.addEventListener('load',function(event){
            console.log('open');
            co_window.addEventListener('unload',function(event){
                console.log('close');
            }, false);
        }, false);
    </script>
    
[/code]


CC BY-SA 3.0
2018-03-18T13:35:58.040
42474
2018-03-18T13:35:58.040
22793
42452
answer