有没有办法在Mobile Safari上强制渲染/更新所有页面元素(即使是那些屏幕外)?在移动Safari上强制整页渲染?
我正在使用PhoneGap构建应用程序,并且在尝试通过位于“存储”屏幕外的DOM元素中的JS更新数字时遇到iOS问题。该元素位于HTML中,但位于屏幕外,直到按下按钮才需要。当我按下按钮显示数字时,元素重新出现需要一段时间。
我注意到,Mobile Safari喜欢渲染页面元素(甚至元素的部分),因为它们在屏幕上可见。例如,您可以放大图像,只渲染可见的部分,如果滚动到不可见的其他部分,现在将开始渲染(需要时间)。
我只是用一个新的字符串(一个数字)替换了一个< span>的内容,但如果屏幕没有更新,直到我在屏幕上调用它,然后需要额外的时间更新。
是否有任何修复/解决方法,或者我应该在未来尝试设计此方案?我觉得这是很奇怪的,我不能动态地改变屏幕外的元素并在需要时将他们拉回到屏幕上......
HTML:
<div class="menu_container" id="menu_menu">
<p id="hit_pct"><span class="gold">100</span> Hit %</p>
</div><!-- /#menu_menu -->
menu_menu位于屏幕外的定位。然后它按下按钮。当menu_menu尝试滑入时,由于span元素不会首先出现,所以它会突然跳跃。然后缓慢渲染并完成幻灯片动画。
我尝试过不使用滑动动画,结果保持不变。元素渲染速度不够快,因此整个容器不会显示在合理的时间内。
JavaScript代码更新的元素:
if(aTilesHit == 0){
pct = 100;
}else{
pct = Math.round((abTilesHit/aTilesHit)*100);
}
x$('#hit_pct').inner('<span class="gold">'+pct+'</span> Hit %');
的JavaScript打开的菜单:
animationsOn = false; //Halts the animations that will be behind the menu
if(x$('.menu_button').hasClass('active')){
close_menus();
}else{
x$('#ingameMenus').css({'left':0}); //Positions the menu on screen
x$('.menu_container').removeClass('hidden'); //.hidden positions the element offscreen. It does NOT add display=hidden
x$('.menu_button').addClass('active');
}
感谢, 乔丹
注:这不会对Android浏览器发生,所以我感觉它与Mobile Safari处理页面渲染的方式直接相关。
“当我按下按钮来显示数字,它永远的元素出现。 “你可以发布按钮按下的行动代码和部分的HTML与此跨度? – atlavis 2010-11-22 21:41:25