浏览器被封锁,工人拯救?

时间:2010-03-25 09:41:03

标签: javascript html5 google-gears

我使用JavaScript渲染20个表,每个表100行。 每个表的数据由控制器提供为JSON。 每个表都分为具有“总计”的部分,并具有一些其他JavaScript逻辑代码。有些总数不属于表格本身。

因此JavaScript会阻止浏览器几秒钟(特别是在IE6中):(

我考虑使用http://code.google.com/p/jsworker/, 但Google Gears Workers(我猜工人一般)不允许我在工作代码中对DOM进行更改,而且在我看来我也不能在jsworker worker代码中使用jQuery。 (也许我错了?)。

此问题似乎是JavaScript编码实践的基础,您能否与我分享您的想法如何处理它?<​​/ p>

3 个答案:

答案 0 :(得分:1)

工作人员只能通过传递消息与页面的执行进行通信。他们无法直接与页面交互,因为这会带来很大的困难。

您需要优化DOM操作代码以加快处理时间。值得咨询谷歌的良好做法。

加快执行速度的一种方法是在DOM之外构建表,并仅在文档完成时将其插入到文档中。这会阻止浏览器在每次插入时重新绘制,这是花费大量时间的地方。

答案 1 :(得分:0)

一般情况下,您不应该在后台工作者中更改UI。您应始终发出工作完成的主线程的信号,并将结果返回给主线程,然后主线程可以处理该线程。

HTML5包含标记的异步属性,从那里写入UI会导致空白页面只包含您想要编写的内容。

所以你需要另一种方法。 我不是JS大师,所以我无法帮助你实现,但至少你现在有了这个概念:)

答案 2 :(得分:0)

如果你想深入了解浏览器性能的世界,High Performance Web Sites blog有大量信息 - 包括当javascripts阻止页面呈现时,以及避免此类问题的最佳实践。