2012-05-10 2 views
0

Chrome과 jquery mobile간에 이상한 상호 작용이 있습니다. 응용 프로그램 흐름은 간단합니다 :크롬에서 페이스 북 인증 후 Jquery 모바일 페이지가로드되지 않습니다.

  • 홈페이지/로그인 화면. "로그인"링크는 data-ajax="false"rel="external"이므로 모든 멋진 JQM AJAX 항목이 사용 중지되었습니다.
  • 매우 간단한 JQuery와 모바일 페이지 크롬과 파이어 폭스 모바일 JQuery와 '재활용 가능한 Ajax에

에게있는 실제 페이지 /home/auth/facebook/callback

  • /auth/facebook/callback (302S)에서 끝나는 OAuth는 춤에 대한 302S의 시리즈 로딩 '스피너는 DOM에로드 된 실제 페이지를 표시하지만 영원히 표시됩니다. Safari (데스크탑 또는 모바일)에서 페이지가 올바르게 표시됩니다.

  • 답변

    2

    문제는 페이스 북에서 발생합니다. 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 요청은 리디렉션을 잘 처리하지 못합니다 (이 주제에 관해 많은 질문이 있습니다).

    JavaScript로 인증하는 대신 서버 측 구현은 어떻습니까? 사용자의 브라우저가 더 빠르고 복잡해집니다.

    +0

    대안에 대한 적절한 제안. 그러나 요청은 AJAX가 아닙니다. 리디렉션 후 브라우저에 완전히 새로운 페이지가로드됩니다. – Leopd

    관련 문제