2011-12-02 118 views
5

這裏有幾個問題:iOS Javascript DOM「凍結?」

  1. 反正是有保留的iOS從頁面上的JavaScript凍結滾動時?

  2. 確實的iOS凍結JavaScript的,當你在另一個選項卡,或者如果您切換應用程序嗎?

  3. 是否有iOS上的任何其他主要的JavaScript的限制?

回答

1

要回答第三個問題,相當大的限制是sometimes innerHTML just plain doesn't work。從公認的答案:

它發生在手機的CPU很忙(比如說100%)時。然後渲染引擎有時會忘記innerHTML設置。

包含在我的統一項目的解決方案是檢驗是否存在的childNodes一個元素,否則再次應用它。

+1

[約翰McKerrell博客上講述了移動Safari瀏覽器的innerHTML錯誤](http://blog.johnmckerrell.com/2007/03/07/problems-with-safari-and -innerhtml /)的方式也在2007年。 – sdleihssirhc

6

iOS 6.x會暫停所有事件定時器,以響應像滾動這樣的觸摸事件,並且一旦事件完成後傾向於不再啓動所有定時器。這是一個衆所周知的iOS 6錯誤,令人厭煩。它幾乎打破了視差和東西。有些人採取建立自己的滾動功能。

下面是關於同一主題的另一StackOverflow的: iOS 6 safari, setInterval doesn't get fired

和另: setInterval pauses in iphone/ipad (mobile Safari) during scrolling

,這裏是你會得到它的bug報告(蘋果不做出錯誤最接近報告公開以保持完美的幻想,因此開發人員製作了他們自己的bug網站):http://openradar.appspot.com/12756410

這一小段代碼將解凍在頁面滾動過程中被iOS破壞/丟失/毀壞的定時器:https://gist.github.com/ronkorving/3755461

這是另一種嘗試解決凍結:iOS 6 js events function not called if has setTimeout in it

不幸的是,沒有什麼可以做,以火,當頁面滾動的事件。像滾動頁面時淡出一個返回頂部的鏈接。當涉及到滾動時,iOS6無法揉搓它的肚子,輕拍它的頭。 (iOS5的正常工作,順便說一句,這是一個迴歸)

+0

還有另一種解決方法在這裏提到:http://stackoverflow.com/questions/10482227/javascript-dom-changes-in-touchmove-delayed-until-scroll-ends-on-mobile-safari - >建立自己的滾動功能。 .. – chaenu