【问题标题】:Jquery mobile page won't load after facebook authentication in chrome在 chrome 中进行 facebook 身份验证后,Jquery 移动页面不会加载
【发布时间】:2012-05-10 18:21:13
【问题描述】:

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

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

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

【问题讨论】:

    标签: authentication google-chrome jquery-mobile


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 公平的解决方法建议。但是请求不是 AJAX——我把它关掉了。这是重定向后在浏览器中加载的全新完整页面。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-09
      相关资源
      最近更新 更多