1

勤務先の会社向けにシングル サインオン サービスを作成しています。Facebook が oAuth サービス用に提供しているように、独自の JavaScript ライブラリが必要です。エラー ハンドラを実装できるように、ウィンドウがいつ閉じられたかを検出するのに問題があります。

使用してみwindow.onunloadましたが、ログインした瞬間にドキュメントがアンロードされ、window.onunload発火します。windowが閉じている状態かどうかを確認する方法があるかどうかを確認する方法を見つけようとしていました。しかし、それを見つけるのはあまり運がありませんでした。

その後、 をwindow使用して が既に閉じられているかどうかを確認してみましたwindow.CLOSEDwindow.onunloadウィンドウが閉じられる前にイベントが発生するため、これは機能しませんでした。

windowMozilla 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);
4

1 に答える 1

0

Javascript が別のドメインでロードされたポップアップを閉じることを検出することも同様の質問です。そこで提案された答えが、抱えている問題の解決に役立つかどうかを確認してください。

于 2013-10-19T12:08:16.017 に答える