Динамическое приложение jQuery Mobile и навигация на основе истории - PullRequest
0 голосов
/ 11 февраля 2012

Я хочу реализовать мобильное приложение jQuery без навигации по истории браузера (не стесняйтесь спрашивать, почему). Я могу генерировать страницы на лету, вставлять их в DOM и выводить их с changeHash, установленным в false, затем очищать их в обработчике событий pagehide, и все в мире хорошо. Пока я не использую виджет как selectmenu, который вызывает диалог. Функция закрытия диалога явно вызывает window.history.back (), и мой мир взрывается.

Есть ли простое решение этой проблемы?

Если нет, следует ли адаптировать jQM для изящной поддержки приложений без навигации, или jQM в основном не подходит для такого рода приложений?

Ответы [ 2 ]

1 голос
/ 11 февраля 2012

http://jquerymobile.com/test/docs/api/globalconfig.html

Попробуйте установить hashListeningEnabled в false

0 голосов
/ 16 февраля 2012

Я научился не использовать changeHash = false для этой цели.Убедитесь, что текущая страница всегда находится на вершине стека истории.В моем случае это единственный элемент в стеке, кроме случаев, когда диалоги вызываются.Пока что, похоже, это работает как чемпион:

function showNewPage($page) {
  $page.appendTo($.mobile.pageContainer);
  $('.ui-page-active').bind('pagehide',function(){$(this).removeWithDependents()});
  $.mobile.changePage($page);
  $.mobile.firstPage = $page;
}

Новая страница создается без хэша, поэтому URL никогда не меняется.Поскольку я на самом деле заменяю первую страницу, мне пришлось обновить $ .mobile.firstPage.Вызов removeWithDependents () вместо remove () очищает диалоги, созданные с помощью selectmenu.

К счастью, это намного лаконичнее, чем я ожидал, просто немного боли для новичка, как я, чтобы собраться вместе.Я видел несколько комментариев, советующих не «взламывать» jQM таким образом, но я думаю, что в jQM слишком много смысла, чтобы ограничивать его традиционной моделью представления на сервере.

...