在Chrome中进行facebook身份验证后,Jquery移动页面将不会加载

时间:2012-05-10 18:21:13

标签: authentication google-chrome jquery-mobile

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

  • 主页/登录界面。 "登录"链接是data-ajax="false"rel="external"所以所有奇特的JQM AJAX内容都被禁用。
  • oauth舞蹈的一系列302s,以/auth/facebook/callback
  • 结束
  • /auth/facebook/callback 302s到真实页面/home这是一个非常简单的Jquery移动页面

在Chrome和Firefox上,jquery mobile' ajax-loading' spinner永远显示,实际页面在DOM中加载但不显示。在Safari(桌面或移动设备)上,页面显示正确。

2 个答案:

答案 0 :(得分:2)

问题来自Facebook。从oauth返回时,他们会在您的回调网址中添加一个网址片段#_=_,这会混淆JQM。正如FB的典型情况一样,这是documented故意没有正当理由,但有关如何处理它的模糊/错误说明。 this SO question中的一堆讨论。我找到的最佳解决方法是在JQM有机会混淆之前将此代码插入页面顶部:

<script>
    // workaround Facebook oauth feature-bug
    if (window.location.hash == '#_=_') window.location.hash = '';
</script>

答案 1 :(得分:0)

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

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