jQuery Mobile 面板在页面完全加载之前在初始加载时显示,速度较慢的设备

Posted

技术标签:

【中文标题】jQuery Mobile 面板在页面完全加载之前在初始加载时显示,速度较慢的设备【英文标题】:jQuery Mobile panels display on initial load with slower devices before page fully loads 【发布时间】:2019-05-25 06:17:28 【问题描述】:

我注意到我创建的一个 webview 应用程序在使用较慢的设备时,我在我的网站中创建的 jQuery 移动面板将在 webview 首次加载时短暂显示在正文底部,但在完全加载后消失。

我想知道 jQuery mobile 是否有办法防止这种情况发生。

如果在 jQuery mobile 中无法做到这一点,我的想法是最初为面板分配 display: none

HTML

<div data-role="panel" id="this_panel" data-display="overlay" style="display: none">

然后使用 jQuery 在单击用于显示面板的按钮时应用display: block

jQuery

$(document).on('click', '#panel_button', function() 
    $('#this_panel').show();
)

更新

所以我认为我找到了一个很好的解决方案,可以在页面加载时尽可能保持干净。由于面板工作在&lt;li&gt; 列表中。当页面最初加载并且它是一个较慢的设备时,您会在 CSS 应用到它然后将其隐藏之前短暂地在页面底部看到面板 html

我所做的是像&lt;div data-role="panel" id="tickets_cog_panel" data-display="overlay"&gt;&lt;/div&gt; 这样放置面板容器,但随后使用 jQuery 我通过 $('#tickets_cog_panel').html('html here') 加载 html。由于 jQuery 必须等到内容完全加载后才能加载,所以加载得更干净。

【问题讨论】:

【参考方案1】:

问:我想知道 jQuery mobile 是否有办法防止这种情况发生?

答:不幸的是,jQuery Mobile 因其错误而臭名昭著,您可能永远不会看到它们被修复(我们谈论的是死框架)。

通常的答案很简单,实现一个启动画面。

在mobileinit 事件中隐藏它。

$( document ).on( "mobileinit", function() 


);

如果您仍然面临 mobileinit 事件,您应该改用 pageshow 事件。

改用 Cordova 启动画面。

另一种方法是像您之前所说的那样隐藏它,然后在 mobileinit 或 pageinit 事件中再次启用它。

【讨论】:

以上是关于jQuery Mobile 面板在页面完全加载之前在初始加载时显示,速度较慢的设备的主要内容,如果未能解决你的问题,请参考以下文章

jQuery Mobile:在完全加载时修改 DOM 以使页面高度为 100%

在显示 jQuery Mobile 页面之前让 Google 地图正确加载

Jquery Mobile:“pageshow”事件仅在 Shift F5(完全重新加载)时触发,但在加载另一个页面或具有不同查询的同一页面时不会触发

想要 jQuery Mobile 面板默认打开

在jquery mobile中打开面板时如何防止页面被拖动?

jQuery Mobile:每次页面加载时如何读取查询字符串参数?