Как перейти назад на одну страницу, используя $ .mobile.changePage - PullRequest
19 голосов
/ 21 ноября 2011

Вся документация по JQuery Mobile, которую я могу найти о навигации в обратном направлении, предполагает, что я собираюсь сделать это с помощью тега привязки, и предлагаю добавить data-rel="back" к тегу.

Я не перемещаюсь изя смешиваю с PhoneGap, что означает, что я вызываю функции javascript, такие как PhoneGap.something(goForwardOnSuccess,goBackwardsOnFailure);

, где

function goFowardOnSuccess()
{
    $.mobile.changePage('#next', { transition: 'pop' });
}
function goBackwardOnFailure()
{
    $.mobile.changePage(/* I HAVE NO IDEA WHAT GOES HERE */);
}

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

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

Документация безумно расплывчата о том, как переходить назад от чистого javascript.Любые подсказки были бы очень хорошими.

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

Ответы [ 6 ]

34 голосов
/ 14 ноября 2012

Это точно не ясно в документации, но есть небольшие намеки на это.

Попробуйте использовать:

$.mobile.back();
4 голосов
/ 27 декабря 2012

имеет смысл использовать data-rel="back" для чего-то подобного: <a href="#" data-rel="back" ...

, но лучше использовать history.back(); внутри блога кода javascript, т.е.

.....
.....  
    var cId = $(this).val();
    // do something with control ID then
.....
.....
    goBackParent();
}
function goBackParent(){
     history.back();
}
3 голосов
/ 27 марта 2012

Почему бы просто не использовать data-rel="back" в качестве атрибута кнопки «Назад», это вернет пользователя на 1 страницу назад.

Также эквивалентно history.back()

2 голосов
/ 21 ноября 2011

Вы возвращаетесь на «два уровня», потому что если вы запускаете changePage программным способом через

$.mobile.changePage('#next', { transition: 'pop' });

и опускаете все остальные опции, вы запускаете две функции:

  • changePage
  • hashChange

Обычно при обычном переходе hashChange блокируется, а при обратном переходе changePage должен быть заблокирован (не уверен, что здесь ...).Таким образом, в вашем случае у вас есть (требуемый) hashChange и нежелательный (changePage) переход.

Проверьте JQM docs для параметров, которые вы можете передать в вашем вызове changePage или посмотрите в исходном коде 1.0 # 3140 для всех доступных параметров.Я бы также попытался передать changeHash: false или fromHashChange: true в вызове вашей функции и посмотреть, что произойдет.

Если вы хотите копать глубже, вам придетсяищите ignoreNextHashChange и как его значение изменяется через JQM.

0 голосов
/ 11 августа 2016

Добавить changeHash: true, откуда вы перенаправляете. А затем используйте «history.back ()» или «history.go (-1)» со своей текущей страницы. Это займет у вас только 1 страницу назад.

$.mobile.changePage("yourpage.html",{ transition: "flip", changeHash: true});
0 голосов
/ 21 ноября 2011

Звонок на history.back() сделает это.

...