Javascript 什么';这是确定哪些代码导致DOM节点创建失控的好方法?

Javascript 什么';这是确定哪些代码导致DOM节点创建失控的好方法?,javascript,dom,google-chrome-devtools,Javascript,Dom,Google Chrome Devtools,Chrome开发工具发现了一些问题,创建的DOM节点比我认为应该给我的设计选择的要多 找出导致DOM节点创建失控的代码区域的好方法是什么?这些信息确实很有用,但要想弄清楚如何处理这些信息似乎比处理CPU配置文件要简单得多。我建议创建代码,遍历DOM并收集有关DOM中哪些节点的统计信息(标记类型、类名、id值、父节点、子节点数、文本内容等)。如果您知道页面中应该包含哪些内容,那么您应该能够查看此数据转储并确定其中哪些内容是您不期望的。您甚至可以在页面加载时运行代码,然后在页面运行一段时间后再次运

Chrome开发工具发现了一些问题,创建的DOM节点比我认为应该给我的设计选择的要多


找出导致DOM节点创建失控的代码区域的好方法是什么?这些信息确实很有用,但要想弄清楚如何处理这些信息似乎比处理CPU配置文件要简单得多。

我建议创建代码,遍历DOM并收集有关DOM中哪些节点的统计信息(标记类型、类名、id值、父节点、子节点数、文本内容等)。如果您知道页面中应该包含哪些内容,那么您应该能够查看此数据转储并确定其中哪些内容是您不期望的。您甚至可以在页面加载时运行代码,然后在页面运行一段时间后再次运行代码,并对两者进行比较。

尝试拍摄两个堆快照(在
Profiles
面板中),一个具有少量DOM节点,另一个具有大量DOM节点,然后比较并查看是否保留了许多节点。如果是,您将能够检测主保持器。

文档。getElementsByTagName(“*”)。长度显示稳定的节点数。这是一个MVC风格(Backbone.js)的问题:我有
render()
方法连接到更改事件上,其中一个方法正在太频繁地渲染和替换自身。@编辑器-您也可以在DOM中插入不在中的DOM节点,但这些节点是创建的,并且有对它们的引用存储在javascript变量中(这可以防止它们被垃圾收集)。@jfriend00您有这样的代码片段或库吗?@user3919920-您可以调用
document.getElementsByTagName(“*”)
然后检查您得到的所有标记。例如,您可以计算每种类型的标记的数量。目前还不清楚您正试图解决什么问题,因此我建议您将自己的问题张贴在描述确切问题的位置。根据您正试图做的具体操作,堆快照可能也很有用。