Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 页面在创建太多DOM后挂起_Javascript_Jquery_Dom - Fatal编程技术网

Javascript 页面在创建太多DOM后挂起

Javascript 页面在创建太多DOM后挂起,javascript,jquery,dom,Javascript,Jquery,Dom,我目前进行了一些异步ajax调用,并根据返回的数据在表中创建行。若行数约为400-500,则页面将在此dom创建后挂起。如果我点击任何文本框或下拉列表,它就会永远卡住。如果行数在100-200左右,然后我单击任何文本框,它仍然很慢,但至少不会卡住 所以,我认为问题在于要创建的dom太多,这会导致浏览器、页面或其他方面出现一些问题 您是否有任何想法或解决方案来改进此性能?您需要以某种方式更新数据。有没有注意到在Twitter、Facebook和其他网站上,当你滚动到页面底部时,会开始从服务器加载更

我目前进行了一些异步ajax调用,并根据返回的数据在表中创建行。若行数约为400-500,则页面将在此dom创建后挂起。如果我点击任何文本框或下拉列表,它就会永远卡住。如果行数在100-200左右,然后我单击任何文本框,它仍然很慢,但至少不会卡住

所以,我认为问题在于要创建的dom太多,这会导致浏览器、页面或其他方面出现一些问题

您是否有任何想法或解决方案来改进此性能?

您需要以某种方式更新数据。有没有注意到在Twitter、Facebook和其他网站上,当你滚动到页面底部时,会开始从服务器加载更多记录?好的应用程序也会开始垃圾收集已经被卷起的旧记录

当你滚动浏览Facebook新闻源时,它不会同时将2007年以来所有好友的帖子加载到浏览器中。一旦DOM中存在最大数量的帖子,Facebook将开始删除您滚动的最旧帖子,为更多帖子腾出空间,并从服务器上抓取新帖子,以便您可以继续滚动。您甚至可以看到您的浏览器滚动条在向下滚动时向上跳跃,因为有更多的帖子被添加到DOM中

没有浏览器能够处理这么多数据。你必须坐下来想一个更好的方式向用户展示这些数据。只有你知道你的用户真正想要什么样的体验,但不管怎样,你都必须减少页面上包含的元素数量

例如:

请注意,当浏览器滚动条到达底部时,它是如何向上跳跃的。Twitter到达底部,然后加载更多数据以滚动浏览。如果我滚动足够远,它最终也会开始清理页面顶部的数据


最简单的解决方案可能是在ajax请求中传递一个页码,让服务器只返回该数据页的结果。

谢谢您的回答。我需要同时显示所有数据,因为用户同时编辑数据并提交。因此,滚动或分页等选项对我的情况没有帮助。似乎我需要限制行大小(数据大小)。如果问题是DOM元素太多,那么你就别无选择。您必须为他们提供一种编辑数据的方法,然后转到下一页并继续编辑数据。无论如何,你需要缩小DOM以保持你的站点可用。谢谢!至少,我现在知道,我现在的代码对我来说无能为力。我需要弄清楚如何操纵DOM,使其不足以支持页面。