JQuery mobile - onhashchange проблема

Я использую $.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  ); 

        });  
    }

Ответ 1

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

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

Отметьте здесь документацию (обратите внимание на раздел "PushState Plugin" ): http://jquerymobile.com/demos/1.0rc3/docs/pages/page-navmodel.html

Ответ 2

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

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