jay*_*rjo 11 html memory-leaks limit
基本上我有一个巨大的表,当用户向下滚动时会变得更大(自动预加载后续行).在某些时候,浏览器变得迟钝,它开始挂起片刻,因为我点击或尝试滚动,它变得越来越慢,它获得的行越多.我想知道页面可以容纳的元素数量是否有任何限制?或者也许只是我的javascript泄漏到某处(虽然我只有一个事件处理程序,附加到表的tbody - 以及一个解析冒泡的mousedown事件的脚本).
更新:在加载了数千行后,延迟变得明显.滚动本身的速度是非常可以忍受的,但是例如突出显示所点击的行(在tbody上的单个事件处理程序的帮助下)是痛苦的(它需要至少2-3秒并且延迟随行数增加).我观察到所有浏览器的延迟.这不仅仅是我,而是几乎每个访问该页面的人,所以我猜它在某种程度上会影响到每个平台.
更新:我在这里提出了一个简单的例子:http://client.infinity-8.me/table.php ?num = 1000(你可以传递你想要的任何数字),基本上它呈现一个带有num行的表,有一个附加到父表的事件处理程序.我应该从中得出结论,由于子元素的数量,实际上没有明显的性能下降.所以它可能是其他地方的泄漏:(
您应该关注的另一件事是表大小调整.如果您使用table-width:auto;浏览器设置样式表,则必须测量表中的每个元素以确定其大小.这可能会非常缓慢.
相反,选择固定宽度或至少使用表格样式table-width:fixed.
我不认为标准定义了限制。每个浏览器实现中可能存在硬编码的限制,尽管我认为该限制可能是数十亿个元素。另一个限制是可寻址内存量。
解决您的问题:除了在向下滚动时自动加载元素之外,您还可以自动卸载已从屏幕上滚动的元素。这样,即使滚动很多次,您的程序仍将保持快速。
您可能还需要考虑替代接口,例如分页。