jqm(jquery mobile)報錯:error loading page解決

之前使用jqm開發,從做項目開始的時候這個問題(error loading page)就一直存在,而且一直是以一種神奇的方式存在,有時候會突然蹦出來,重新刷新一下又消失了,所以這個問題都一直拖着,直到最後實在要發版本了不能再拖了,總不能讓別人在手機上刷新頁面吧。

最後在jquery.mobile.js文件中調試的時候,終於發現了問題,因爲我們整合了進了backbone,所以我們的頁面跳轉方式不用默認的jqm的頁面跳轉,所以在jqm.config.js中的mobileinit事件中加入了

$.mobile.linkBindingEnabled = false;禁掉了默認的jqm的頁面跳轉方式,才能使用backbone的方式,

$(document).bind("mobileinit", function () {
			console.log("configure jqm");
			$.mobile.ajaxEnabled = false;
		        $.mobile.linkBindingEnabled = false;
			$.mobile.hashListeningEnabled = false;
			$.mobile.pushStateEnabled = false;
			$.mobile.defaultPageTransition = 'slide';
			$.mobile.buttonMarkup.hoverDelay = "false";
	  	    $.mobile.transitionFallbacks.slideout = "none";
	  	    // Remove page from DOM when it's being replaced
	  	    $.mobile.pageLoadErrorMessage = 'Sorry, something went wrong. Please try again.';
	  	    $(document).on('pagehide', 'div[data-role="page"]', function (event, ui) {
	  	        //移除下拉監聽事件
	  	        $(document).off("pageinit", "div.pull-demo-page");
	  	        $(event.currentTarget).remove();
	  	    });
	  	});

我們發現出於某種原因這種跳轉方式有時候又沒有被禁掉,而jqm的這種頁面跳轉方式沒被禁掉的時候,在backbone中頁面切換就會有error loading page的問題,最後定位問題是在jqm.config.js加載順序不對,我們並沒有在最開始加載這個文件,最後的解決方案是我們在main.js中如下處理

require(['app', 'jqmconfig'], function (app,jqmconfig) {
	app.initialize();
});

我們在上面代碼中加了jqmconfig,這是jqm.config.js的引入後的文件名,表示我們在開始的時候就加載jqm.config.js文件,即綁定mobileinit事件,問題就解決了。

發佈了35 篇原創文章 · 獲贊 3 · 訪問量 47萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章