我使用JavaScript渲染20个表,每个表100行。 每个表的数据由控制器提供为JSON。 每个表都分为具有“总计”的部分,并具有一些其他JavaScript逻辑代码。有些总数不属于表格本身。
因此JavaScript会阻止浏览器几秒钟(特别是在IE6中):(
我考虑使用http://code.google.com/p/jsworker/, 但Google Gears Workers(我猜工人一般)不允许我在工作代码中对DOM进行更改,而且在我看来我也不能在jsworker worker代码中使用jQuery。 (也许我错了?)。
此问题似乎是JavaScript编码实践的基础,您能否与我分享您的想法如何处理它?</ p>
答案 0 :(得分:1)
工作人员只能通过传递消息与页面的执行进行通信。他们无法直接与页面交互,因为这会带来很大的困难。
您需要优化DOM操作代码以加快处理时间。值得咨询谷歌的良好做法。
加快执行速度的一种方法是在DOM之外构建表,并仅在文档完成时将其插入到文档中。这会阻止浏览器在每次插入时重新绘制,这是花费大量时间的地方。
答案 1 :(得分:0)
一般情况下,您不应该在后台工作者中更改UI。您应始终发出工作完成的主线程的信号,并将结果返回给主线程,然后主线程可以处理该线程。
HTML5包含标记的异步属性,从那里写入UI会导致空白页面只包含您想要编写的内容。
所以你需要另一种方法。 我不是JS大师,所以我无法帮助你实现,但至少你现在有了这个概念:)
答案 2 :(得分:0)
如果你想深入了解浏览器性能的世界,High Performance Web Sites blog有大量信息 - 包括当javascripts阻止页面呈现时,以及避免此类问题的最佳实践。