ポップアップウィンドウを閉じたときに親ウィンドウの関数を呼ぶ (IE,Edge両対応)


Edgeの場合

  • onbeforeunload

もしくは

  • onunload
function popup(url) {
    if (! window.showModalDialog) {
        // IE以外 (Edgeなど)
        modalWin = window.open(url);
    } else {
        // IE
        modalWin = window.showModalDialog(url);
    }
    return modalWin;
}

//-----------------

var url = "https://qiita.com";
if (modalWin = popup(url)) {
    if (! window.showModalDialog) {
        // IE以外 (Edgeなど)
        modalWin.onunload = function () {
            alert("onunload");
        }
        modalWin.onbeforeunload = function () {
            alert("onbeforeunload");
        }
    } else {
        // IE
        alert("IE");
    }
}
addEventListenerの例
function unloaded() {
    location.reload();
}

var modalWin = window.open(url);                 
if (! window.showModalDialog) {
    // IE以外
    modalWin.addEventListener('beforeunload', unloaded, false);
} else {
    // IE
}

showModalDialog の代替

window.showModalDialog がない場合は以下を用いるとよいかも。