这里有一个工作示例:http://jsfiddle.net/Gajotres/Zr7Gf/
$(document).on('pagebeforecreate', '#index', function(){
var interval = setInterval(function(){
$.mobile.loading('show');
clearInterval(interval);
},1);
});
$(document).on('pageshow', '#index', function(){
var interval = setInterval(function(){
$.mobile.loading('hide');
clearInterval(interval);
},1);
});
但在这里,我们有一个不同的问题,除非你的网页是足够复杂的新页面将很快加载。 jQuery手机有内部计时器,看起来页面加载到DOM的速度有多快。如果页面非常复杂并且加载时间超过10毫秒,则在任何其他情况下都会显示加载器,无论您尝试多么艰难,加载器都不会显示。
另请注意,只有DOM加载将计入该10毫秒。页面样式和转换不在计算中。因此,无论页面加载看起来是否只有较长的DOM加载次数。
我的示例不会显示加载程序,因为它是一个非常简单的示例,并且pageshow事件几乎可以立即触发。但是你可以看到,它正在例如,如果你对此有何评论这一行:
$.mobile.loading('hide');
你的情况,它应该工作,因为直到页面加载pageshow事件将被延长。
感谢您的回复。我试过你的代码,但是我面临的问题是,加载器仅显示在加载的页面(源代码)上,并且在第二个(目标)页面显示之前,我仍然看到“白色”页面。任何方式不显示瞬间白色,或在白色显示装载机?在显示加载程序时可能会添加一个人工延迟?再次感谢。 – WhatsInAName 2013-04-24 19:27:56