我在糟糕的互联网上强制测试我的应用程序,以了解用户如何通过我的应用程序体验导航,但在某些事件上显示加载程序时遇到问题。
当我将它们放在 ajax 调用中时,加载器在页面内已经存在的事件上工作正常:
beforeSend: function() {
$.mobile.loading("show");
},
complete: function() {
$.mobile.loading("hide");
},
但它们在 pagecreate 或 pagebeforeshow 等事件上效果不佳,例如:
$("#points").on("pagecreate", function() {
$.ajax({
type: "GET",
url: hb_base_url + "consumer/" + user_id + "/merchants/nature/" + business_point_search + "/offset/" + offset + "/" + limit,
crossDomain: true,
contentType: "application/json",
dataType: "json",
beforeSend: function() {
$.mobile.loading("show");
},
complete: function() {
$.mobile.loading("hide");
},
success: function(data) {
//do stuff
},
error: function(x, t, m) {
alert(connection_lost);
$.mobile.back();
}
});
});
当我导航到这个页面时,我的连接挂起,我根本没有加载,它只是挂在那里,用户感觉应用程序已经崩溃。
有什么设置可以解决这个问题吗?我想在我的所有页面更改中显示一个加载器,等待所有页面事件完成后再隐藏它。
编辑 我也试过:
$(document).on("pagebeforehide", function(){
$.mobile.loading("show");
});
$(document).on("pageshow", function(){
$.mobile.loading("hide");
});
但没有成功,即使在需要很长时间才能改变的页面上。