Мобильный Jquery - проблема onhashchange - PullRequest
1 голос
/ 17 ноября 2011

Я использую $.mobile в моем приложении. Я должен создать свою собственную систему маршрутизации. Я привязываю наблюдателя на hashchange и извлекаю интересные данные из location.hash. У меня проблема - jQuery.mobile удаляет знак хеша с location.hash, если он имеет косую черту (например, от 'lalal/#controller/action/param' до 'lalal/controller/action/param' и $.mobile говорит в желтом поле Error Loading Page.

Сначала я пытался отменить привязку существующего hashchange, но затем страницы не загружались автоматически (что мне требуется).

Как предотвратить изменение хэша, но этот jQuery все равно должен автоматически загружать страницу (например, по ее идентификатору, объявленному в элементе, имеющем data-role='page')? , Ниже приведен фрагмент моего класса маршрутизатора: (Router.load не изменяется location.hash)

__construct: function() {   

        var that = this; 
        $( window ).bind( "hashchange" , function( e ) {
            //e.stopImmediatePropagation()
            that.load( this.location.hash  ); 

        });  
    }

Ответы [ 2 ]

6 голосов
/ 17 ноября 2011

Я полагаю, что вы боретесь с плагином pushState в jQuery Mobile, добавленным в бета-версию 3 (я полагаю).Вы можете отключить этот плагин с помощью следующего кода (используется до включения файла JavaScript jQuery Mobile):

$(document).on('mobileinit', function () {
    $.mobile.pushStateEnabled = false;
});

Ознакомьтесь с документацией здесь (обратите внимание на раздел «Плагин pushState»): http://jquerymobile.com/demos/1.0rc3/docs/pages/page-navmodel.html

0 голосов
/ 07 октября 2012

в вашем html после включения jquery и до , включая jquery.mobile-1.x.y.js add:

<script>
$(document).bind("mobileinit", function(){
        $.mobile.pushStateEnabled = false;
        $.mobile.ajaxEnabled = false;
        $.mobile.hashListeningEnabled = false;
});
</script>
...