当我的移动网络应用程序(在PhoneGap内部运行)启动时,它会从服务器执行数据请求。问题是屏幕在执行此请求时保持黑屏。当这个请求在启动之外的任何时间执行时,应用程序会显示一个加载对话框,为用户提供一些反馈信息,说明正在加载,但在启动时,它不会以这种方式运行。
我正在pageshow
事件处理程序中执行请求。
以下是代码:
$("#home").on("pageshow", onHomeShow);
...
function onHomeShow() {
syncData();
}
function syncData() {
// show loading dialog and get the data here
}
非常感谢任何和所有帮助。提前谢谢。
答案 0 :(得分:1)
然后你应该自己触发ajax loader,它可以轻松完成。它将向用户表明正在发生的事情。如果可能的话,还可以在某些早期页面事件中初始化您的方法,例如pagebeforecreate。
工作示例:http://jsfiddle.net/Gajotres/Zr7Gf/
$(document).on('pagebeforecreate', '[data-role="page"]', function(){
setTimeout(function(){
$.mobile.loading('show');
},1);
});
$(document).on('pageshow', '[data-role="page"]', function(){
setTimeout(function(){
$.mobile.loading('hide');
},300);
});
在我的示例中,需要setTimeout,因为除非使用setTimeout或setInterval执行,否则web-kit浏览器不会显示加载器。使用此块:
setTimeout(function(){
$.mobile.loading('hide');
},1);
当你的函数执行结束时。如果您想了解有关jQM页面事件的更多信息,请查看我的其他答案: jQuery Mobile: document ready vs page events 或官方 documentation 。
编辑:
我忘了,将 [data-role="page"]
替换为您首页的 id
。
答案 1 :(得分:1)
如果你做这样的事情
document.addEventListener('deviceready', this.onDeviceReady, false);
function onDeviceReady() {
syncData();
}