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>