5

サードパーティのデータにアクセスするために oAuth 1.0 を使用しています。

このために、私は次の手順を実行しています:-

  1. ユーザーが「サードパーティと同期」ボタンをクリックします。(これは通常、ポップアップ ブロッカーを呼び出さないため、ユーザーがクリックする必要があります。)

  2. ユーザーがこのボタンをクリックすると、次のコードが実行されます。

        $('#sync_with_thirdparty').click(function(){
           var child = window.open('/oauth');
           $(child).unload(function() {
               if (this.location != "about:blank") {
                alert("Child window closed");
            }
          });
        });
    
  3. 新しいウィンドウで、PHP はサードパーティから認証 URL を取得し、ユーザーを同じ URL にリダイレクトします。ユーザーが上記のサードパーティにリダイレクトするとすぐに、「子ウィンドウが閉じられました」と表示されます。

  4. 次に、ユーザーはサードパーティのサイトにログインし(必要な場合)、アプリへのアクセスを許可します。彼が許可ボタンをクリックするとすぐに、第三者がユーザーを当社の Web サイトの新しいページにリダイレクトします。このページでは、完全に正常に動作している window.close() メソッドを呼び出しています。

  5. ただし、子ウィンドウで window.close() を実行すると、親ウィンドウは子ウィンドウが閉じていることを認識できません。

どうすればこの問題を解決できますか?

注 : この 3rd は Iframe が好きではなく、トップ ウィンドウで開くように更新されます。サードパーティのコンテンツを制御することはできません。私たちのウェブページは HTML5 形式です。

4

2 に答える 2

1

window.opener() 子ウィンドウは、関数を介して親ウィンドウと通信できます。次のようなことができます。

子ウィンドウ

window.opener.messageFromChildWindow('closed');

親ウィンドウ

function messageFromChildWindow(msg) {
    if(msg === 'closed') {
        alert('child window closed');
    }
}
于 2020-02-18T12:23:57.483 に答える
0

Javascript には権限の問題があるため、子ウィンドウのコンテンツまたはイベント アクティビティにアクセスすることはできません。

まあ、同じドメインにある場合はdocument.domain、両方のウィンドウで強制的に同じことを一度試してみてください。

お気に入り:

var hdomain="yourdomain.com";
if (document.domain != hdomain){
   if ((document.domain.indexOf(hdomain)) != -1){
       document.domain = hdomain
   }
}

これを親と子の両方のページに入れます。

幸運を。

于 2013-11-11T08:39:29.503 に答える