2012-05-10 6 views
0

Я столкнулся с странным взаимодействием между chrome и jquery mobile. Поток применения прост:JQuery мобильная страница не загружается после аутентификации facebook в chrome

  • Главная страница/экран входа. Ссылка «Войти» - data-ajax="false" и rel="external", поэтому все причудливые вещи JQM AJAX отключены.
  • Серия 302s для OAuth танца, который заканчивается в /auth/facebook/callback
  • /auth/facebook/callback 302s на реальную страницу /home, которая является очень простой Jquery-страницы для мобильных устройств

В Chrome и Firefox JQuery мобильный «ajax- загрузка 'spinner показывает навсегда, с фактической страницей, загруженной в 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

Смежные вопросы