0

我使用 JavaScript 来呈现 20 个表,每个表 100 行。每个表的数据由控制器以 JSON 格式提供。每个表都分为具有“总数”和其他一些 JavaScript 逻辑代码的部分。一些总数在表格本身之外。

结果 JavaScript 会阻塞浏览器几秒钟(尤其是在 IE6 中):(

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

这个问题似乎是 JavaScript 编码实践的基础,你能与我分享你的想法如何解决它吗?

4

3 回答 3

1

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

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

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

于 2010-03-25T09:48:10.687 回答
0

如果您想深入了解浏览器性能的世界,高性能网站博客有大量重要信息——包括 javascripts 何时阻止页面呈现,以及避免此类问题的最佳实践。

于 2010-03-25T15:02:58.073 回答
0

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

HTML5 包含一个用于标签的异步属性,从那里写入您的 UI 会导致一个空白页面,其中只有您想要编写的内容。

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

于 2010-03-25T09:44:27.637 回答