我正在开发一个jQtouch应用程序,通过ajax完成的每个请求都会在文档中为加载的内容创建一个新的div。任何时候都只显示一个div。
在应用开始变得反应迟钝之前,我可以拥有多少个div?
有人对此有任何想法吗?
编辑:它是一个在Safari上运行的iPad应用程序,它将少于1000个div,具有非常基本的内容答案 0 :(得分:16)
我一次在屏幕上有成千上万,甚至十万个div。 性能要么好,要么坏,取决于:
从HTML解析还是在JavaScript中动态生成?
从HTML解析意味着你有一个大的html源代码,这可以使浏览器挂起。在JS中生成的速度非常快,即使在Internet Explorer上也是如此,这是所有JS浏览器中最慢的。
答案 1 :(得分:8)
说实话,如果你真的需要这个问题的绝对答案,那么你可能想重新考虑你的设计。
这里没有给出答案是正确的,因为它取决于您的申请特定的许多因素。例如。重量与小CSS的使用,div的大小,每个div所需的实际图形渲染量,目标浏览器/平台,DOM事件监听器的数量等。
仅仅因为你不能意味着你应该这样做!: - )
答案 2 :(得分:6)
正如其他人所说,实际上没有答案。
然而,在有关Google Maps API第3版的讨论中,发言人多次提出ten thousand次数,作为浏览器不满的基本阈值。
答案 3 :(得分:1)
如果没有定义特定环境,则无法回答您的问题。
即便如此,任何人告诉你的只是一个猜测。您需要使用不同的浏览器和硬件对实际配置进行自己的测试。您还需要建立一些性能基准来确定“太慢”甚至意味着什么。
答案 4 :(得分:0)
我已经能够毫无问题地添加几千个div。当然,取决于您之后将要做的事情以及客户端计算机上的内存。其他人都是对的。
正如Harpo所说,10K可能是一个很好的上限。有一段时间,我注意到速度问题从大约4K div开始,但硬件从那时开始有所改进。
而且,正如Neil N所说,通过脚本添加div比使用庞大的HTML源更好。
而且,为了回答Harpo的评论,一种“分解”以便JS不会锁定页面并产生“页面运行缓慢”错误的方法是在每次结束时调用一个计时器“添加一个div“例程,而计时器又调用你的”添加div“功能。
现在,我的问题是:是否可以“绘画”以便您不需要添加数千个div?这可以通过带有一些浏览器的canvas标签来完成,但我认为在IE上使用VML(excanvas项目)是不可能的。或者是吗?我认为VML通过向DOM添加新元素来“绘制”,此时你也可以使用DIV,除非它是一个简单的形状。
是否可以通过脚本来改变图像的来源? (当然,DOM中的图像 - 不是服务器上的原始图像。)