有沒有辦法在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