исправить URL с помощью мобильного телефона jquery - PullRequest
7 голосов
/ 16 февраля 2012

Я использую jquery mobile для создания сайта, но когда я нажимаю на кнопку, и эта кнопка указывает на страницу диалога, в URL появляется #&ui-state=dialog.Если я введу <a data-ajax="false"></a>, то URL-адрес будет правильным без #&ui-state=dialog, но диалоговое окно не будет отображаться правильно, потому что, очевидно, ajax отключен. Есть какой-то способ исправить это?

Ответы [ 4 ]

17 голосов
/ 09 апреля 2014

Попробуйте использовать data-history = "false" во всплывающем теге div, например:

<div data-history="false" data-role="popup" id="options-list-div" data-theme="b" data-overlay-theme="b">

Удачи! : -)

1 голос
/ 05 сентября 2013

Не знаю почему, но пример Jasper не работает, когда я пытаюсь его тоже интегрировать.

Я использовал data-* атрибуты для кнопки для настройки диалогового окна.* Теперь я объявляю все параметры в функции changePage, и она отлично работает.

<a href="#" data-role="button" id="#my-dialog-button"></a>

$("#my-dialog-button").click(function() {
    $.mobile.changePage( "page_containing_the_dialog.html", {
        type: "get",
        transition: 'pop',
        role: 'dialog',
        changeHash : false
    });
});
1 голос
/ 16 февраля 2012

Когда вы открываете диалоговое окно, используйте $.mobile.changePage() и установите для опции changeHash значение false: http://jquerymobile.com/demos/1.0.1/docs/api/methods.html

//delegate the event binding so elements in the DOM now and in the future will be bound-to
$(document).delegate('#my-dialog-button', 'click', function () {

    //change to the dialog, forcing the hash to remain the same and the page to be viewed as a dialog
    $.mobile.changePage($('#my-dialog'), {
        changeHash : false,
        role       : 'dialog'
    });
});
0 голосов
/ 27 июня 2014

Использование changeHash отключит изменение истории, потому что URL не изменится. Таким образом, если пользователь нажимает / нажимает кнопку закрытия, он будет распространяться на предыдущую страницу, если она есть.

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

Вместо changeHash, если мы используем transition, он будет работать как диалог и позволять хэшу изменять историю.

@ Vincentp вы пытались удалить свойство changeHash из вызова changePage, теперь, когда вы используете transition?

$("#my-dialog-button").click(function () {
    var default_transition = "pop";
    $.mobile.changePage("page_containing_the_dialog.html", {
        role : 'dialog',
        transition: $(this).data('transition') || default_transition
    });
    return false;
});
...