jquery手机iphone页面闪烁
Posted
技术标签:
【中文标题】jquery手机iphone页面闪烁【英文标题】:Jquery mobile iphone page flicker 【发布时间】:2012-12-04 02:46:15 【问题描述】:我正在开发一个移动页面应用程序,其中一个页面很长,(这个页面太长了,如果我必须从头到尾查看,我必须在 Iphone 上滚动 6 次。)
此页面加载后,它会跳转并稳定下来。或加载后闪烁,对用户来说非常烦人。
此页面上的数据正在运行时呈现。我有空的 div 元素,我在运行时使用 jquery pageshow 事件填充字段名称和值。
我发现如果我通过删除一些正在呈现的数据来缩短长度,这个闪烁就会消失, 但是我不能这样做
企业不想改变设计,我已经尝试了各种技巧来防止这种闪烁,现在我已经没有想法了, 我尝试延迟显示页面,直到页面完全加载,但不起作用
你能帮忙吗,有什么办法可以防止这个页面闪烁。
谢谢 爱尔兰共和军
【问题讨论】:
您使用的是Jquery
框架还是Jquery Mobile
框架?
@user1908682,对我的 jsFiddle 回答有什么想法吗?
【参考方案1】:
您所指的内容被称为“闪烁”,这已被充分记录并在这里问了几次:
jQuery Mobile blinking at page transitions on iPad
Transitions blink on jQueryMobile pages navigation
https://github.com/jquery/jquery-mobile/issues/4024
我自己在我的 android 手机 (v4.0.4) 上使用基于 PhoneGap 构建的应用程序时遇到了同样的问题:与我的主页(包含一个长 data-role="listview"
)之间的转换会导致屏幕在执行前闪烁。我的诀窍是将user-scalable=no
添加到视口元标记中:
<meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1" />
尽管其他人已经通过覆盖 jQuery mobiles css 和/或完全禁用页面转换取得了成功:
CSS
.ui-page
-webkit-backface-visibility: hidden;
JS
$(document).bind("mobileinit", function ()
$.mobile.defaultPageTransition = "none";
);
【讨论】:
你知道普通的 jQuery 库是否也会出现问题吗?我在使用滑块时遇到了非常相似的问题。 @Alvaro 据我所知,抱歉。【参考方案2】:您可以实现一个小加载图标,直到所有数据都加载完毕。这将为用户提供无缝体验,但仍符合业务需求。
类似于有一个不显示的包装 div。加载时,加载 div 将显示 loading.png 的背景图像。加载内容后,设置包装 div 以显示和移除正在加载的 div。
虽然以不同的方式加载数据会更好,但我知道这并不总是可能的。
【讨论】:
【参考方案3】:对于 jQuery Mobile,使您的 footer
持久 并防止该部分动画化。
<div data-role="footer" data-id="foot" data-position="fixed">
<h4>Page 1 Footer</h4>
</div><!-- /footer -->
jsFiddle DEMO
编辑:最新动态
上面的 jsFiddle jQuery Mobile Demo 已经修改为使用 jQuery 1.7.2 和 jQuery Mobile 1.2.0。
我刚刚发现,在使用 jsFiddle 中的 scrollBars
函数期间,当 overflow
设置为 hidden
时,将 jsFiddle 与 jQuery 1.8.2 和 jQuery Mobile 1.2.0 一起使用无法按预期工作。
该功能是在jQuery动画期间隐藏浏览器滚动条,防止元素在页面变化的动画期间短暂跳转。
浏览器的滚动条实际上是隐藏的,但body
部分中的元素会继续“跳跃”,就好像滚动条仍然存在一样。
当 jsFiddle jQuery 设置为 1.7.2 时不会发生这种情况。
【讨论】:
以上是关于jquery手机iphone页面闪烁的主要内容,如果未能解决你的问题,请参考以下文章
jQuery mobile 100% 高度页面,等于可见区域
iPhone上的jQuery Mobile + PhoneGap无法加载页面