1

この問題について問い合わせるために Facebook バグ ID 517124631665353 を作成しましたが、これが Facebook の JS SDK のバグなのか、iOS 6 に付属するモバイル Safari の最新バージョンのバグなのかはわかりません。 iOS6.

次の FB Rell の例をそれぞれ試してください。

プレーンアラート(): http://www.fbrell.com/saved/5224cbd2585cdcd4faefd2de236e577c

<button id="fb-login">Login & Permissions</button>

<script>
document.getElementById('fb-login').onclick = function() {
  var cb = function(response) {
    Log.info('FB.login callback', response);
    if (response.status === 'connected') {
      Log.info('User logged in');
    } else {
      Log.info('User is logged out');
    }
    alert('This fires on Mobile Safari, iOS 6.');
  };
  FB.login(cb, { scope: 'publish_actions' });
};
</script>

setTimeout() の alert(): http://www.fbrell.com/saved/9fee23e8553878748f8a3b840e8f0cb5

<button id="fb-login">Login & Permissions</button>

<script>
document.getElementById('fb-login').onclick = function() {
  var cb = function(response) {
    Log.info('FB.login callback', response);
    if (response.status === 'connected') {
      Log.info('User logged in');
    } else {
      Log.info('User is logged out');
    }
    setTimeout(function () {alert('This never fires on Mobile Safari, iOS 6.')}, 0);
  };
  FB.login(cb, { scope: 'publish_actions' });
};
</script>

iOS 6 を実行している iPad と iPhone の両方で、setTimeout() 内の alert() は起動しません。iPad では、ポップアップ ウィンドウは常に閉じているように見えますが、iPhone では、ポップアップ ウィンドウが閉じず、ユーザーが元のページに戻ることがあります。

この問題は当初、www.expertflyer.com/mobile で確認されました。Facebook のログインが完了すると、AJAX リクエストが送信されます。AJAX リクエストが返されたときに実行する必要があるコードが実行されないことがわかりました。これは、FB Rell の例で setTimeout() 呼び出しを使用してより簡単に示されていますが、共通点は、Facebook ログインが返された後に非同期コードが実行されないことです。これは以前は機能していましたが、コードに変更を加えていません。これは、iOS の以前のバージョンと Android で期待どおりに機能します。

4

0 に答える 0