当我在页面之间导航时,我的phonegap/jquery移动应用程序大部分时间会闪烁。这是正常的还是有解决方法?
当我在页面之间导航时,我的phonegap/jquery移动应用程序大部分时间会闪烁。这是正常的还是有解决方法?
.ui-page {
-webkit-backface-visibility: hidden;
}
这对我在PhoneGap / jQuery Mobile / Android手机上的工作。
有关Android上闪烁的消息(2012-01-10),请参见http://jquerymobile.com/blog/2012/01/10/upcoming-releases-1-0-1-1-1-and-beyond/
引用:排除性能差的平台,如Android 2.x,以便将更复杂的幻灯片、弹出和翻转转换回退到所有转换的默认淡入淡出,以确保流畅的体验。
此线程中的CSS解决方案在我的Android 2.x设备上没有起作用。
我使用在所有链接中都禁用过渡效果data-transition="none"
,一切正常。它也应该在页面级别设置时工作,但对于我来说没有起作用(jQuery Mobile 1.0)。这是代码:
// turn off animated transitions for Android
if (navigator.userAgent.indexOf("Android") != -1)
{
$("a").attr("data-transition", "none");
}
另外一种(更好的)方法是设置jQuery Mobile的默认转换:
$(document).bind("mobileinit", function()
{
if (navigator.userAgent.indexOf("Android") != -1)
{
$.mobile.defaultPageTransition = 'none';
$.mobile.defaultDialogTransition = 'none';
}
});
iPhone 使用硬件加速进行过渡,而其他平台则使用软件进行过渡。这就解释了为什么只有 iPhone 能够实现平滑的过渡效果。
我尝试了其他建议,但都没有起作用。最终我通过更改viewport元标签来解决问题:
<meta name="viewport" content="width=device-width, user-scalable=no" />
多亏了http://www.fishycode.com/post/40863390300/fixing-jquery-mobiles-none-transition-flicker-in
.ui-mobile, .ui-mobile .ui-page, .ui-mobile [data-role="page"],
.ui-mobile [data-role="dialog"], .ui-page, .ui-mobile .ui-page-active {
overflow: hidden;
-webkit-backface-visibility: hidden;
}
.ui-header {
position:fixed;
z-index:10;
top:0;
width:100%;
padding: 13px 0;
height: 15px;
}
.ui-content {
padding-top: 57px;
padding-bottom: 54px;
overflow: auto;
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
}
.ui-footer {
position:fixed;
z-index:10;
bottom:0;
width:100%;
}
你的应用是为iPhone还是Android设计的?
我在几个地方看到过这个可能是CSS修复闪烁问题的解决方法:
#YourApp {
-webkit-backface-visibility: hidden;
overflow: hidden;
}
顺带一提:我上周使用了 CSS 修复方法,但在继续时遇到了另一个问题。
我的应用有一个联系页面 - 按照这里提供的说明很容易(http://jquerymobile.com/demos/1.0a4.1/docs/forms/#forms-text.html)。
然而,一旦聚焦于文本输入字段,页面就会“跳动”(滚动)起来。有时键入文本时也会出现此问题。因为行为比较随机,所以难以描述,不过这里有关于它的讨论。禁用闪烁修复的想法也来自这里。 https://github.com/jquery/jquery-mobile/issues/2683#commits-ref-d195354
仍在努力寻找“合适”的解决方案,但如果您没有键盘输入的话,我想这将是有效的!
这是一个已知的问题,团队称之为“闪烁”。他们公开表示将很快解决此问题,并已经指派了相关人员处理。以下是最近提到此问题的博客文章:
http://jquerymobile.com/blog/2011/05/06/jquery-mobile-team-update-week-of-may-2/
我曾经遇到过相同的问题,但情况更糟,当在Phonegap中包装一个Jquery mobile应用时。页面转换不仅闪烁不定,而且界面完全崩溃。我尝试了这里提出的大多数解决方案,但没有一个有效。然后我找到了Piotr Walczyszyn的this解决方案,一切都像梦中一样顺利!强烈推荐给任何同时使用Jquery mobile和Phonegap的人。
我曾经遇到同样的问题,原因是我的HTML文件中有不同页面之间重复的ID。
尽管这些重复的ID位于不同的HTML页面上,但JQuery Mobile会将所有HTML文件编译为一个单一的HTML文档,以便进行页面转换。
这导致HTML无效,从而导致类似于您所描述的闪烁现象。
一旦我解决了重复的ID问题,一切都运作得非常好。
更新:在此处有一个Stack Overflow答案,更详细地解释了Jquery Mobile中重复ID的问题 https://stackoverflow.com/a/8608474/271125
<script src="disableTransition.js"></script>
为了禁用闪烁转换,在disableTransition.js文件中,放置以下代码
$(document).bind("mobileinit", function(){
$.extend( $.mobile , {
defaultPageTransition: 'none'
});
$.mobile.defaultPageTransition = 'none';
$.mobile.defaultDialogTransition = 'none';
});
在安卓上对我解决了问题。