有时,它会显示,有时,不显示,那么,如何确保 ajax 加载指示器在 jquery mobile 中显示?
3 回答
除非您的应用程序出现重大问题,否则您所描述的都是正常情况。
虽然页面转换可能需要很长时间(桌面浏览器上的页面加载/转换时间通常为 670 毫秒),但页面加载到该页面DOM
只需几毫秒(通常为 3-5 毫秒)。AJAX
只有当页面加载(进入DOM
)需要超过 10 毫秒时,加载程序才会显示。其他页面转换动作不计入AJAX
调用,因此页面加载到DOM
.
页面加载/转换期间的操作:
- 页面加载和处理:3ms(
AJAX
加载器仅在此操作期间显示,如果需要超过 10ms) - 页面增强:45ms
- 过渡:604ms
要了解更多信息,请查看我的其他文章,或在此处找到它,搜索名为:页面更改时间的章节
还有一件事,除非您使用正常的页面加载AJAX
加载器,否则不会显示(如果您的链接具有属性rel="external"
或data-ajax="false"
)。
为了确保默认情况下完成 ajax 导航,只要您不向链接和按钮添加 data-ajax="false" 属性,Jquery Mobile 就会将 ajax 导航添加到加载到 DOM 中的页面。否则,您可能已经添加了一个全局修改,该修改在某些页面上禁用了 ajax 导航。
或者,您可以在某些链接和按钮中将 rel="external" 作为属性,从而禁用 ajax 导航。
如果您可以更具体,即发布您的问题的 jsfiddle 示例,我可以给您一个更好的解释。另请提及您使用的 Jquery Mobile 版本。
当你这样做时:
$.mobile.changePage( "#page-home", { transition: "none"} );
添加这个:
$.mobile.showPageLoadingMsg();
不要忘记添加
$.mobile.hidePageLoadingMsg();
在 pageLoad 函数的末尾