0

私が望む経験は次のとおりです。

  1. ユーザーが「サインアップ」をクリック
  2. いくつかの非同期サーバーが発生します(チェックと検証など)
  3. 必要な非同期サーバーの処理が完了すると、Facebook / Twitter / any auth ダイアログがポップアップします。

これを困難にするいくつかのこと:

  1. ソーシャル ポップアップ ウィジェットはポップアップ内にある必要があります。iframe 内に配置することはできません。
  2. ポップアップ ブロッカーは、クリック ハンドラーの即時関数にない window.open コードをブロックします。
  3. window.open 標準の ajax コールバック ハンドラからのコードは、ポップアップ ブロッカーによってブロックされます。
  4. 同期 ajax リクエストは jQuery 1.8 で非推奨になりました

何か案は?

4

1 に答える 1

2

これはよくある、長い間嘆かわしい問題です。jQuery は同期 AJAX を非推奨にする可能性がありますが、jQuery 以外の AJAX リクエストをいつでも使用できます。別の可能性は、次のことが行われるリファクタリングです。

  1. ユーザーが「サインアップ」をクリック
  2. スクリプトはローカル URI に対して window.open を呼び出します
  3. 読み込み中にポップアップが表示され、「チェックと検証」が実行されます
  4. 検証エラーがある場合、popup は親にエラーを送信し、それ自体を閉じます
  5. そうでない場合、ポップアップのローカル ページは FB/Twitter OAuth フローにリダイレクトされます

それが可能であれば、私はそれをお勧めします。そうでない場合でも、 async: false (または独自の非常に単純なクロスブラウザー XHR ラッパーを作成する) が最善の方法です。

于 2012-06-24T22:56:24.323 に答える