浏览器可以显示的html元素数量是否有限制?

浏览器可以显示的html元素数量是否有限制?,html,memory-leaks,limit,Html,Memory Leaks,Limit,基本上,我有一个巨大的表,当用户向下滚动(自动预加载后续行)时,它会变得更大。在某个时刻,浏览器变得迟钝,当我四处点击或尝试滚动时,它开始挂起一段时间,它变得更迟钝,它得到的行越多。我想知道页面可以容纳的元素数量是否有限制?或者可能只是我的javascript在某处泄漏(尽管我只有一个事件处理程序,连接到表的tbody,还有一个解析冒泡mousedown事件的脚本) 更新:加载一千行后,延迟变得明显。滚动本身的速度是可以忍受的,但例如,高亮显示单击的行(在tbody上的单个事件处理程序的帮助下)

基本上,我有一个巨大的表,当用户向下滚动(自动预加载后续行)时,它会变得更大。在某个时刻,浏览器变得迟钝,当我四处点击或尝试滚动时,它开始挂起一段时间,它变得更迟钝,它得到的行越多。我想知道页面可以容纳的元素数量是否有限制?或者可能只是我的javascript在某处泄漏(尽管我只有一个事件处理程序,连接到表的tbody,还有一个解析冒泡mousedown事件的脚本)

更新:加载一千行后,延迟变得明显。滚动本身的速度是可以忍受的,但例如,高亮显示单击的行(在tbody上的单个事件处理程序的帮助下)是痛苦的(至少需要2-3秒,延迟随着行数的增加而增加)。我在所有浏览器上都观察到延迟。不仅是我,而且几乎每个访问该页面的人,所以我猜在某种程度上它会影响到每个平台


更新:我在这里给出了一个简单的示例:(您可以传递任何想要num的数字),基本上它呈现一个带有num行的表,并且有一个附加到父表的事件处理程序。我应该由此得出结论,实际上并没有因为子元素的数量而导致性能的明显下降。所以可能是其他地方的泄漏:(

我认为没有限制。
但是,HTML文件越长,您的计算机需要的资源就越多。但是表必须非常大,然后…

限制实际上是由用户代理和正在使用的客户机决定的。HTML与XML一样,是一种数据树格式。因此,元素越多,客户机浏览器必须通过的树就越远搜索以呈现页面


我在向一个div添加100多个表时遇到了问题(作为IE6的一个旧解决方案,它无法动态创建表元素)。

如果每个表行上都有JS,那么旧计算机将无法处理。对于HTML本身,您不必太担心

您应该担心的是,普通人不喜欢大表,这就是分页的目的。使用分页将其分开,以获得更好的可用性或其他考虑


想想那个本并没有书页,只有一大页的书,你们愿意读吗?即使你们的眼睛(在我们的例子中是电脑)可以处理。

我认为标准没有定义限制。每个浏览器实现中可能都有硬编码的限制,尽管我可以想象这个限制可能有数十亿个元素。另一个限制是可寻址内存的数量

为了解决您的问题:除了在向下滚动时自动加载元素外,您还可以自动卸载屏幕上已向上滚动的元素。这样,即使滚动了很多次,您的程序仍将保持快速


您可能还想考虑另一种接口,如分页。

< p>您使用什么浏览器?一些浏览器可以比其他浏览器更好地处理事情。例如,如果您使用IE,如果它是呆滞的,我不会感到惊讶。它不处理JavaScript事件以及WebKIT浏览器。

另一件事显然是你的计算机(RAM和CPU)。但老实说,大多数计算机不应该有问题,除非我们谈论10000多行…即使这样


你能发布一些代码吗?

考虑到存在大量浏览器和渲染引擎,它们都有不同的性能特征,并且考虑到这些引擎在性能方面得到稳步改进,计算机硬件一直在加快:不,浏览器可以处理的内容没有固定的上限。但是r、 对于特定版本的浏览器,特定硬件有当前的上限


如果你没有定义更多的硬件和浏览器,那么很难对你有所帮助。此外,如果你不发布代码,没有人可以对Javascript的可能性能提出任何建议。即使它只是一个事件处理程序,如果它无限循环或对每个元素调用它,也会大大降低渲染过程的速度ess.

无论RAM或CPU使用情况如何,预加载后文件的实际大小是多少


如果你的表真的那么大,你可能会强迫你的用户下载兆字节的数据——我发现有些机器倾向于在2-4MB的数据后挂起。

另一件事你应该看看表的大小。如果你的表的样式是
表宽:自动;
浏览器必须测量表中的每个元素来确定它的大小。这可能会变得非常缓慢


相反,请选择固定宽度,或者至少使用
表格宽度:fixed

设置表格样式。例如,在加载所有内容之前,IE不会开始呈现表格。因此,如果您有5000行表格,则需要加载所有5000行数据,然后再呈现其中的任何一行,就像其他浏览器在加载后开始呈现一样部分数据,并随着表的增长调整一点(如果需要)


一般来说,渲染速度会随着节点数量的增加而减慢,但也会随着节点的复杂性而减慢…避免嵌套表,如果可能,尝试将大型表拆分为块…例如,每100行(如果可能)

在一个页面上发布整个大型数据集是没有理由的。如果要求向用户提供所有这些数据,那么您应该将其导出到一个比浏览器更好的软件可以读取的文件中

相反,我建议您创建一个AJAX驱动的页面,让用户看到一部分数据,如果他们需要看到更多,您只需下载该部分数据集并替换页面上的当前数据集。这是分页。谷歌搜索就是一个很好的例子。

如果有任何限制