2012-05-10 74 views
0

我遇到了chrome和jquery mobile之間奇怪的交互。申請流程簡單明瞭:jquery移動頁面在Chrome身份驗證後無法加載

  • 主頁/登錄屏幕。 「登錄」鏈接是data-ajax="false"rel="external",所以所有花哨的JQM AJAX內容都被禁用。
  • 一種OAuth技巧這在/auth/facebook/callback
  • /auth/facebook/callback 302S結束真實頁/home這是一個非常簡單的jQuery移動頁

在Chrome和Firefox jQuery Mobile的「ajax-系列302S的加載「微調器永遠顯示,實際的頁面加載到DOM但不顯示。在Safari(桌面或手機)頁面顯示正常。

回答

2

問題來自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> 
0

據我所知,AJAX請求不能很好地處理重定向(這裏有很多關於這個主題的SO問題)。

而不是在JavaScript中進行身份驗證,服務器端實現如何?這對用戶的瀏覽器來說會更快,更簡單。

+0

解決方法的公平建議。但請求不是AJAX - 我將其關閉。這是重新定向後在瀏覽器中加載的全新完整頁面。 – Leopd