作为一些性能测试的一部分,我想查看在任何给定时间页面中有多少 DOM 元素。
最初我使用控制台并手动输入:document.getElementsByTagName('*').length
但是由于元素是动态添加和删除的,我想要一种方法来自动显示它而无需手动执行此操作。
对我来说,使用 CSS 计数器似乎是最简单的方法:
(这是一个演示:见右上角的黄色框)
html {
counter-reset: elems;
counter-increment: elems;
}
html * {
counter-increment: elems;
}
body:after {
content: counter(elems) ' elements';
position: absolute;
top:0;
right: 0;
padding: 0.5rem;
background-color: yellow;
z-index: 1000000000; /* make sure display appears on top */
}
html + head + body = 3... +
A section with 4 divs = 5..... 3 + 5 = 8
<section>
<div>div1</div>
<div>div2
<div>div3</div>
</div>
<div>div4</div>
<section>
问题是这种技术不适用于一些更复杂的网站,我猜这是因为它有点幼稚。
以维基百科的主页为例- 我使用浏览器检查器添加上述 css-counter css 并产生“888 个元素”
但是,当我使用控制台时document.getElementsByTagName('*').length
- 它返回了 975 个元素。
所以我的问题是:
是什么导致了 DOM 元素数量的巨大差异,有什么我没有考虑到的吗?
这可以用 CSS 可靠地完成吗?