ポップアップウィンドウの前に何らかのアクションを実行する必要があります(window.open
)閉じます。
次のようなものが良いでしょう:
var new_window = window.open('some url')
new_window.onBeforeUnload = function(){ my code}
どうすればそれを達成できますか?
あなたの例は動作しますポップアップウィンドウのURLが親と同じドメインにある限りページで、イベントをすべて小文字に変更します:
var new_window = window.open('some url')
new_window.onbeforeunload = function(){ /* my code */ }
受け入れられた答えは同じ起源に対して正しいですが、クロスオリジンポップアップの解決策を見つけました:
var win = window.open('http://www.google.com');
var timer = setInterval(function() {
if(win.closed) {
clearInterval(timer);
alert('closed');
}
}, 1000);
ソース: atashbahar.com
それを使用することを検討している人のために。
Facebookでさえ Javascript SDK でこの「ハック」を使用しています。
これを確認するには、コードを見てください。 https://connect.facebook.net/en_US/sdk.js で.closed
を検索するだけです。
イベント名はonbeforeunload
ではなくonBeforeUnload
です。 JSでは大文字と小文字が区別されます。
上記のように、onbeforeunloadイベントをウィンドウにバインドする必要がありますafter。
他のスレッドの例を参照してください: https://stackoverflow.com/a/25989253/578275 。
var new_window = window.open('some_url')
new_window.window
はnull
です。ただし、setTimeout
またはsetInterval
関数を使用して手動で確認する必要があります。
これは、同じドメインにいないときに確認する唯一の方法です。