2015-08-29 4 views
0

В настоящее время я работаю над веб-проектом с помощью jQuery mobile, но навигация просто не сработает.jQuery Мобильная навигация не работает

Когда я нажимаю страницу из меню (например, «клиенты»), адрес отображается правильно (www.aaa.bb/#customers), и страница загружается без проблем. Когда я нажимаю другую страницу, URL-адрес также правильный, и страница загружается, но когда я пытаюсь вернуться с помощью кнопки возврата браузера, страница не изменяется, даже если URL-адрес изменяется правильно.

У меня есть отдельные файлы для мои разные страницы. Может ли это вызвать проблему?

Если да, то почему URL-адрес меняется правильно?

Спасибо!

Edit: Ajax включен на моей странице

ответ

0

После нескольких часов чтения документации и тестирования различных попыток я написал это решение:

$(window).on("navigate", function(){ 
    var file="/"; 

    if(typeof history.state.pageUrl != 'undefined') { 
     file += history.state.pageUrl + ".php"; 
    } 

    else{ 
     file += "index.php"; 
    } 


    $(":mobile-pagecontainer").pagecontainer("change", root + file, {"reverse": true}); 
}); 

Это решение работает только для моей конкретной проблемы, и может не работать для других.

Известные ограничения:

  • все ваши JQuery Мобильные страницы должны находиться в корневом каталоге вас на сайте
  • имена файлов ваших страниц должны быть равны атрибуту данных URL-адрес
  • все ваши страницы должны иметь одинаковое расширение файла (.php)

Диалоги, вероятно, также вызовут проблемы. У меня также возникает странная проблема при навигации по моему файлу index.php.

Я улучшу свое решение с течением времени и опубликую его снова.

0

Если вы используете AJAX, чтобы перемещаться по сайту необходимо обновить историю самостоятельно, используя history.pushState, так как ваш HTTP (AJAX) вызова будет в противном случае не будет зарегистрирован и сохранен в истории.

Существует различные способы, которыми Вы можете управлять историей, или изменить, как вы AJAX звонки уволят, here представляет собой твердый документ о том, как манипулировать историю браузера, следить за этим, создав функцию, которая проверяет onpopstate события, запускаемые и обновите свою страницу.

+0

Но почему URL правильно меняется, когда я нажимаю кнопку «Назад»? –

+0

Поскольку вы используете AJAX для загрузки данных. Кнопка «Назад» не запускает вызов AJAX еще раз. Вы (предположительно) используете onClick или какой-либо обработчик событий для запуска вашего вызова AJAX. Использование события 'onpopstate' для перезапуска вызова ajax снова перезагрузит ваши данные. –

+0

Если jQuery mobile обновляет историю, вам не нужно вручную ее выполнять. Просто используйте «onpopstate», чтобы перезагрузить вызов AJAX. Ваш вызов AJAX просто НЕ попадает через кнопку «Назад». Кодируйте это так. –

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