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事件,问题就解决了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值