即使页面需要大约4秒钟的时间渲染并显示,加载微调器也不会显示。我所做的:单击按钮时,我调用一个方法,在方法的开头,我调用此方法:function taskStat(){$ .mobile.loading('show'); $ .mobile.changePage(“#taskStatistics”,{transition:“ none”});; .....然后调用其他方法,包括db调用(无ajax调用)
在最后一个方法中,我最终将其称为:$ .mobile.loading('hide');
从主页到taskStatistics页面,动态创建和显示的本地db调用和html项目大约需要4到5秒钟,在此期间页面将冻结在主页上,然后转到stats页面。装载机为什么不显示?有建议的解决方法吗?谢谢
部分代码:
function taskStat(){
$.mobile.loading('show',{theme:'d',textonly:false,html:""});
$.mobile.changePage("#taskStatistics",{transition: "none"});
statQueries= new Array();
offsetInitial=0;
db.transaction(taskStatsBefore, errorCB);
}
function taskStatsBefore(tx){
var query="select COUNT(*) AS MYCOUNT1 from TASKS_GVT";
tx.executeSql(query,[],taskStatsBeforeCb,errorCB);
}
...其他几种我可以获取数据库结果并为下一页动态创建html元素的方法,最后一种方法的结尾是:$ .mobile.loading('hide');
我建议添加具有0或100ms超时的setTimeout。在没有超时的情况下,浏览器会等到任务完成后才刷新UI。
function taskStat(){
$.mobile.loading('show',{theme:'d',textonly:false,html:""});
$.mobile.changePage("#taskStatistics",{transition: "none"});
setTimeout(function(){
statQueries= new Array();
offsetInitial=0;
db.transaction(taskStatsBefore, errorCB);
},0);
}
function taskStatsBefore(tx){
var query="select COUNT(*) AS MYCOUNT1 from TASKS_GVT";
tx.executeSql(query,[],taskStatsBeforeCb,errorCB);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句