勤務先の会社向けにシングル サインオン サービスを作成しています。Facebook が oAuth サービス用に提供しているように、独自の JavaScript ライブラリが必要です。エラー ハンドラを実装できるように、ウィンドウがいつ閉じられたかを検出するのに問題があります。
使用してみwindow.onunload
ましたが、ログインした瞬間にドキュメントがアンロードされ、window.onunload
発火します。window
が閉じている状態かどうかを確認する方法があるかどうかを確認する方法を見つけようとしていました。しかし、それを見つけるのはあまり運がありませんでした。
その後、 をwindow
使用して が既に閉じられているかどうかを確認してみましたwindow.CLOSED
。window.onunload
ウィンドウが閉じられる前にイベントが発生するため、これは機能しませんでした。
window
Mozilla Developer Network wiki でオブジェクトを調べたところ、window.close
イベントが見つかりました。やってみたのですが、なぜか起動しません。
これまでに実装したコード:
ポップアップ - ログイン:
window.onunload = function (e) {
try {
window.opener.postMessage([false], '*');
} catch (e) {}
};
ポップアップ - ログイン成功:
window.opener.postMessage([true, 'data' ], '*');
window.close();
オープナー:
var eventMethod = window.addEventListener ? "addEventListener" : "attachEvent";
var eventer = window[eventMethod];
var messageEvent = eventMethod == "attachEvent" ? "onmessage" : "message";
eventer(messageEvent, function (e) {
if (e.data[0]) {
this._data = JSON.parse(e.data[1]);
return _fireEvent('success', e.data[1]);
} else {
if (win.CLOSED)
return _fireEvent('failure');
}
}, false);