2012-03-04 2 views
0

Я видел this related question где jQuery мобильных загрузок в DOM. Однако в этом случае была активирована загрузка ajax, и он использовал window.location для перемещения по страницам.jQuery мобильная загрузка, когда она не должна, даже с ajaxEnabled установлена ​​на false

Я не использую window.location, просто нормальные гиперссылок, и я выключил АЯКС загрузки:

$(document).ready(function() { 
    // disable page transitions 
    $.mobile.ajaxEnabled = false; 
    $.mobile.defaultPageTransition = 'none'; 
    } 

Тем не менее, если я:

  1. Начало на странице А
  2. Нажмите ссылку на страницу B
  3. Нажмите на кнопку «Назад» на моем телефоне Android
  4. Нажмите ссылку t о странице C

происходит следующее:

  1. Page C грузы в полном объеме, включая все JavaScript и медиа
  2. код [загрузка ...] графический появляется
  3. Содержание страницы A загружается на страницу

Это ненадежность; иногда контент находится на еще более ранней странице.

Обратите внимание, что на шаге 3 нажатие на кнопку обратной связи jQuery, сгенерированную мобильным устройством, приводит к такому же поведению.

Обратите внимание, что это происходит даже для ссылок, которые явно помечены как data-ajax="false".

Кроме того, это не происходит на настольных браузерах, только Android (и это также похоже на iPhone, хотя я тестировал его только с помощью симулятора).

ответ

2

Похоже, что это было вызвано pushState.

От official documentation:

Важно: отн = "внешний" и $ .mobile.ajaxEnabled = ложные

Немного различных реализаций replaceState API в различных браузерах может вызвать странное поведение в конкретных сценариях. Например, некоторые версии браузера (в том числе настольные браузеры) реализуют событие popstate иначе, если ссылка на внешнее и перемещение на страницу, на которую уже было нажата/заменена. Когда создание приложения JQuery Mobile, где Ajax-навигация быть явно отключены, либо через частое использование rel="external" по ссылкам или отключив Ajax навигации полностью через $.mobile.ajaxEnabled=false, мы рекомендуем отключить функцию PushState , чтобы возвратиться к хэш-навигацию для более последовательного поведения .

Все, что потребовалось добавлял код, чтобы отключить PushState в заголовке:

<script src="//code.jquery.com/mobile/1.0.1/jquery.mobile-1.0.1.min.js"></script> 
<script type="text/javascript"> 
    $.mobile.pushStateEnabled = false; 
</script> 

Сейчас он работает!

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