السلام عليكم

سأشرح السكربت بالتدريج:

1- جلب جميع العناصر في الصفحة

 var elements = document.querySelectorAll("*");

2-إنشاء كائن ليعمل كـMap

var koko=Array(); 

3- المرور على جميع أبناء جميع العناصر لإنشاء (عنصر في الكائن) مقابل له

for (var i = 0; i < elements.length; i ++) {
    for (j = 0; j < elements[i].childNodes.length; j ++) {
            koko[elements[i].childNodes[j].nodeName]=0; 
    } 
}

4-المرور على جميع أبناء جميع العناصر لعدّ عدد مرات ورود الـ tag الخاص بها (اسمها)

for (var i = 0; i < elements.length; i ++) {
    for (j = 0; j < elements[i].childNodes.length; j ++) {
        koko[elements[i].childNodes[j].nodeName]++; 
    } 
} 

5- المرور على عناصر الكائن جميعًا وطباعة اسم العنصر وعدد مرات تكراره

for(var x in koko)
    console.log(x + " used " + koko[x]);

العنصر الوحيد الذي لا يتم طباعته ولا المرور عليه هو HTML لأنه ليس ابنًا لأحد والله وليّ التوفيق