11

我正在开发一个 jQtouch 应用程序,通过 ajax 完成的每个请求都会在文档中为加载的内容创建一个新的 div。任何时候都只显示一个 div。

在应用程序开始变得无响应和缓慢之前,我可以拥有多少个 div?

有人对此有任何想法吗?

编辑:它是一个在 Safari 上运行的 iPad 应用程序,它的内容非常基本,不到 1000 个 div

4

5 回答 5

19

我一次在屏幕上显示了数万个,甚至可能是十万个 div。性能好坏取决于:

从 HTML 解析还是在 JavaScript 中动态生成?

从 HTML 解析意味着你有一个 LARGE 的 html 源代码,这会使浏览器挂起。在 JS 中生成的速度惊人地快,即使是在所有 JS 浏览器中最慢的 Internet Explorer 上也是如此。

于 2010-05-27T18:01:00.817 回答
8

老实说,如果您真的需要这个问题的绝对答案,那么您可能需要重新考虑您的设计。

这里给出的答案都不是正确的,因为它取决于许多特定于您的应用程序的因素。例如,大量与少量 CSS 使用、div 的大小、每个 div 所需的实际图形渲染量、目标浏览器/平台、DOM 事件侦听器的数量等。

仅仅因为你可以并不意味着你应该!:-)

于 2010-05-27T17:56:05.680 回答
7

正如其他人所说,真的没有答案。

然而,在这次关于 Google Maps API 版本 3 的讨论中,演讲者多次提到了“一万”这个数字,作为浏览器不满的基本门槛。

http://code.google.com/apis/maps/documentation/javascript/

于 2010-05-27T18:02:23.343 回答
1

如果不定义特定环境,就不可能回答您的问题。

即便如此,任何人告诉你的任何事情都只是猜测。您需要使用不同的浏览器和硬件对实际配置进行自己的测试。您还需要建立一些性能基准来确定“太慢”甚至意味着什么。

于 2010-05-27T17:54:44.657 回答
0

我已经能够毫无问题地添加数千个 div。当然,这取决于您之后要做什么,以及客户端计算机上的内存。其他人都是对的。

正如 Harpo 所说,10K 可能是一个很好的上限。有一次,我注意到从大约 4K div 开始的速度问题,但从那时起硬件有所改进。

而且,正如 Neil N 所说,通过脚本添加 div 比拥有巨大的 HTML 源更好。

而且,为了回答 Harpo 的评论,一种“分解”以便 JS 不会锁定页面并产生“页面运行缓慢”错误的方法是在每个“添加 div”例程的末尾调用一个计时器,而计时器又会再次调用您的“添加 div”功能。

现在,我的问题是:是否可以“绘制”这样您就不需要添加数千个 div?这可以通过某些浏览器的 canvas 标签来完成,但我认为在 IE 上使用 VML(excanvas 项目)是不可能的。或者是吗?我认为 VML 通过向 DOM 添加新元素来“绘制”,此时您也可以使用 DIV,除非它是一个简单的形状。

是否可以通过脚本更改图像的来源?(当然是 DOM 中的图像——不是服务器上的原始图像。)

于 2010-06-28T15:18:51.667 回答