0

当我的移动 Web 应用程序(在 PhoneGap 内部运行)启动时,它会执行来自服务器的数据请求。问题是在执行此请求时屏幕保持黑色。当此请求在启动时以外的任何时间执行时,应用程序会显示一个加载对话框,以向用户提供一些反馈,即某些内容正在加载,但在启动时,它不会以这种方式运行。

我正在pageshow事件处理程序中执行请求。

这是代码:

$("#home").on("pageshow", onHomeShow);

...

function onHomeShow() {
    syncData();
}

function syncData() {
   // show loading dialog and get the data here
}

任何和所有的帮助将不胜感激。提前致谢。

4

2 回答 2

1

然后你应该自己触发ajax加载器,它可以很容易地完成。它将向用户指示正在发生的事情。此外,如果可能的话,在一些较早的页面事件(如 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,因为 web-kit 浏览器不会显示加载程序,除非它使用 setTimeout 或 setInterval 执行。使用这个块:

setTimeout(function(){
    $.mobile.loading('hide');
},1);  

当您的函数执行结束时。如果您想了解有关 jQM 页面事件的更多信息,请查看我的其他答案:jQuery Mobile: document ready vs page events或在官方文档中。

编辑 :

我忘了,用[data-role="page"]id的初始页面替换。

于 2013-05-22T12:27:56.617 回答
1

如果你做这样的事情

document.addEventListener('deviceready', this.onDeviceReady, false);

function onDeviceReady() {
syncData();
}
于 2013-05-22T12:28:04.403 回答