1

我创建了 Facebook 错误 ID 517124631665353 来询问这个问题,但我不确定这是 Facebook 的 JS SDK 还是 iOS 6 附带的最新版本的移动 Safari 的错误。这只发生在运行的 iPhone 和 iPad 上iOS 6。

尝试以下每个 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