1

状況はこんな感じです。JavaScript を使用して、読み込みインジケータを表示するドメインの URL を含むウィンドウを開きます。

約 1 秒後に、ウィンドウの URL が PayPal ウィンドウ (別のドメイン) に変更されます。ユーザーがペイパル ウィンドウを閉じたときにイベントをキャプチャできるようにしたいので、支払いが失敗したことを示す正しいページにユーザーをリダイレクトできます。

遭遇しましwindow.onbeforeunloadたが、URLがPayPalに変更されたときに発生しますが、その後ウィンドウが閉じられたときには発生しません。この問題を解決するにはどうすればよいですか?

したがって、これは機能していないようで、ここで他の答えを見つけることができません:

    ppwin = window.open('paypal/loading.php', 'paypal_popup', 'width=900,height=500');
    ppwin.onbeforeunload = function(){
        //triggered when URL changes
        if (ppwin.closed) // false because window is still open.
            // Order failed
    }

私はその答えを受け入れましたが、まだ満足していません。それは機能しますが、それだけです。誰かがより良い答えを提供してくれたら、私はもっとうれしいです!

4

2 に答える 2

2

私は同じ問題に遭遇し、最終的に私がしたことは、ポップアップウィンドウが閉じられたかどうかを親ウィンドウに定期的にチェックさせることです。別の解決策があれば、私は気が狂いました。

コードは次のようになります。

// Create popup window
var popup = window.open('http://www.google.com');

// Set interval to check if it has been closed
var windowCheckInterval = setInterval(function() { windowCheck(); }, 300);

// Check function
function windowCheck() {
    if (!popup || popup.closed) {
        clearInterval(windowCheckInterval);

        // Do something
    }
}

これは非常に失礼なソリューションですが、ユーザー エクスペリエンスは非常に優れており、プログラミングは非常に簡単です。

プロセスが別の方法で終了したとき (ウィンドウが閉じられたときだけでなく)、間隔をクリアすることを忘れないでください。

于 2013-01-22T12:11:46.953 に答える
0

JavaScript でポップアップ ウィンドウのクローズ イベントをキャプチャするを参照してください。

ポップアップ ウィンドウの URL が親と同じドメインにある限り、これをキャッチできます。それ以外の場合は、「ドメインでドキュメントを開き、リモート URL を iframe にロードするか、サーバー スクリプトを介して読み込み、そこからレンダリングすることをお勧めします。」

于 2013-01-22T12:48:49.723 に答える