jQuery Mobile - 如何检查页面加载

时间:2013-06-04 20:20:56

标签: jquery jquery-mobile

我目前正在构建一个简单的jQuery Mobile应用程序。目前,如果我想在页面加载之前或之后做一些事情,我使用以下调用钩子:

显示页面时(例如插入数据/模板):

$(window).on('pageshow', function() {
        if ($('#pageId').length > 0) {

            doStuff();

        }
});

如果用户移动到新页面(我想保存一些值):

$(document).delegate('#pageId #buttonNext', 'click', function() {
    doStuff();
});

我有两个问题:

有没有更好,更优雅的方式来做到这一点(我确信有)? 在每次在safari关闭后重新打开应用程序时,在移动设备(尤其是iOS Safari)上,pageshow方法再次被触发,例如重新进入已完全构建的页面。有没有办法防止这种行为?

1 个答案:

答案 0 :(得分:2)

如果我理解正确,你想要一个只触发一次的事件,以及在页面转换期间保存一些值的更好方法。

有几个页面事件在应用程序生命周期中只触发一次,如果多次访问页面都无关紧要。

前两个要提及的是 pagebeforecreate pagecreate ,这两个事件只会在页面创建之前和期间触发一次。这也是添加动态生成内容的绝佳机会,因为jQuery Mobile将进一步增强其内容。

第三页事件被称为 pageinit ,它与经典jQuery文档准备就绪。与前面提到的2个事件一样,它只会触发一次,但这也是jQuery Mobile内容即将被增强的时刻,因此此时添加的每个动态内容必须是 manually enhanced 。此事件也非常适合事件绑定,因为与 pageshow 不同,在 pageinit 中绑定事件时,您无需担心多个事件结合。

仅当使用需要正确页面高度的插件时,才应使用

Pageshow ,因为只有在显示页面时页面高度才具有实际值。这对于照片画廊,旋转木马等插件很重要,基本上都是处理图片的所有内容。

如果您想了解有关网页活动的更多信息,请查看here。此外,您还可以在页面转换之间找到3种不同的传递/存储数据解决方案。