2010-12-03 47 views
0

HTML5工作者是避免鎖定用戶界面的一個非常有趣的概念。用於綁定jQuery事件的HTML5 web工作者(關於IE?)

對於商店應用程序,我列出了使用jQuery綁定激活功能的大量產品小部件。

我能否使用網絡工作人員執行此任務,以便網頁響應更快?

對於網絡工作者的支持在IE中是缺乏的,但是在支持到來之前可以實現/模擬類似的東西嗎?

我發現IE瀏覽器,這實現舊的瀏覽器http://code.google.com/p/ie-web-worker/

回答

1

是的,網絡工作者不鎖DOM,因此使用它們加快了渲染。

網絡工作者的唯一替代方法是使用一系列使用window.setTimeout調用的短函數,但這會鎖定DOM。

編輯: 你發現的ie選擇不完全相同。因爲它不執行搶先式多任務(它怎麼可能),如果你運行一個長時間運行的腳本瀏覽器會認爲該頁面已經崩潰,而不會在鉻,Firefox等

因此,基本上,因爲你需要訪問DOM。將任務分成相當大的部分(最多50ms),然後將每個部分放在window.setTimeout中並讓瀏覽器安排它們。如果零件太小,瀏覽器會浪費時間。

+0

從MDN:「注意:像往常一樣,後臺線程,包括工人,不能處理DOM如果採取的後臺操作。線程需要導致DOM的變化,他們應該將消息發回給他們的創建者來完成這項工作。「 So $('#id')。click(functin(){});會不會影響DOM? – Michael 2010-12-03 07:04:29

+0

我沒有意識到你想操縱DOM。不,除了處理和發佈消息之外,您無法在網絡工作人員中進行任何操作。創建可以操縱DOM的Web Workers是沒有意義的,因爲DOM訪問必須是單線程的。 – 2010-12-03 07:08:45

0

如果您正在執行長時間運行的腳本,Web工作人員將非常有用。將長時間運行的腳本卸載到「工作者」進程將使您的UI保持響應,因爲工作人員不會阻止您的用戶界面。不幸的是,我並沒有意識到IE瀏覽器的網頁工作者有很好的填充/填充(除非IE用戶安裝了Google Gears)。我發現保持應用程序響應的最佳方式是使用網絡工作人員支持它的瀏覽器,但降級爲不使用setTimeout(大約每100毫秒)的瀏覽器。

如果你有興趣在基於谷歌齒輪墊片,那就是:http://html5-shims.googlecode.com/svn/trunk/demo/workers.html