0

我遇到了 chrome 和 jquery mobile 之间的奇怪交互。申请流程很简单:

  • 主页/登录屏幕。“登录”链接是这样的data-ajax="false"rel="external"所以所有花哨的 JQM AJAX 东西都被禁用了。
  • 一系列 302 的 oauth 舞蹈,结束于/auth/facebook/callback
  • /auth/facebook/callback302 到真实页面/home,这是一个非常简单的 Jquery-mobile 页面

在 Chrome 和 Firefox 上,jquery 移动 'ajax-loading' 微调器永远显示,实际页面加载到 DOM 中但不显示。在 Safari(桌面版或移动版)上,页面可以正常显示。

4

2 回答 2

2

问题来自 Facebook。当从 oauth 返回时,它们会#_=_在您的回调 URL 中添加一个 URL 片段,这会使 JQM 感到困惑。就像 FB 的典型情况一样,这被记录为蓄意而无正当理由,但关于如何处理它的说明含糊/不正确。这个 SO question中的一堆讨论。我发现的最佳解决方法是在 JQM 有机会混淆之前将此代码插入页面顶部:

<script>
    // workaround Facebook oauth feature-bug
    if (window.location.hash == '#_=_') window.location.hash = '';
</script>
于 2012-05-11T15:09:32.467 回答
0

据我所知,AJAX 请求不能很好地处理重定向(关于这个主题有很多 SO 问题)。

与其在 JavaScript 中进行身份验证,不如使用服务器端实现?对于用户的浏览器来说,它会更快、更简单。

于 2012-05-10T18:50:51.717 回答