【问题标题】:Jquery mobile page seen much after the pageshow event on an android phone在 Android 手机上的 pageshow 事件之后,Jquery 移动页面看到了很多
【发布时间】:2013-11-08 13:45:02
【问题描述】:

我正在使用 Jquery Mobile 构建一个 cordova/phonegap 应用程序。我的应用程序现在感觉非常缓慢,我发现主要原因是页面仅在我看到 pageshow 事件被触发后大约一秒钟后才显示。理想情况下,我希望在触发 pageshow 事件时显示它。

此外,在此期间(在实际显示页面之前的 pageshow 之后),如果我在某个点触摸页面,它会在该点应该存在的项目上触发 ontouch 事件。所以页面已经存在,但可能需要这段时间才能呈现。

您知道如何使用 JQuery Mobile 使此页面呈现得更快吗?我可以使用自定义 Jquery Mobile 构建器做些什么来帮助 Jquery Mobile 不做不必要的事情吗?

请注意,我已使用

在我的应用上关闭了全局过渡
$.mobile.defaultPageTransition = 'none';

【问题讨论】:

    标签: javascript android jquery jquery-mobile cordova


    【解决方案1】:

    移动浏览器对触摸事件有 300 毫秒的延迟。要禁用此功能,您可以使用 fastclick。它可以消除您应用中 300 毫秒的延迟。

    https://github.com/ftlabs/fastclick

    这也可以帮助您加快工作速度。

    浏览器等待 300 毫秒来检查用户是单击了还是要进行双标签。如果用户在 300 毫秒之前没有再次触摸,则视为单击。否则视为双标签。

    【讨论】:

    • 我的回答有意义吗?
    • 嗨@Purus,感谢您的回复。但我的问题不同。我了解这 300 毫秒的延迟,我正在解决这个问题。我的问题是点击已经发生并且页面已经改变 - 新页面上的 pagebeforeshow 和 pageshow 事件已经触发,但我还没有看到新页面。它在此之后出现了一段时间。此外,我注意到这种延迟在更好的手机上较少,而在较慢的旧手机上则更多
    • 是否启用了 DOM 缓存?如果是这样,则从缓存中显示页面,使页面看起来是空的。
    【解决方案2】:

    只是发布另一个答案,因为我认为这将是您更新问题的解决方案。

    如果我对您的问题的理解是正确的,禁用 DOM 缓存即可解决。

    $(document).bind("mobileinit", function(){
        $.mobile.page.prototype.options.domCache = false;
    });
    

    【讨论】:

    • 是的,某些页面启用了 domcache,我已将其删除,但似乎没有帮助。触发 pageshow 事件后,页面仍然显示很多内容。
    • 我已经使用上面的语句全局禁用了缓存,并从我的 HTML 中删除了每个 data-dom-cache="true"。我认为没有任何缓存存在。
    猜你喜欢
    • 2013-01-08
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多