Я хотел бы использовать решение JavaScript для измерения количества затронутых узлов DOM за определенный промежуток времени. Решение, которое я ищу, очень похоже на свойство, затронутое элементами, на панели инструментов Chrome.
Поскольку я хочу измерять эту клиентскую сторону, когда мое приложение находится в процессе производства, я не могу использовать панель инструментов Chrome.
Я уже пробовал document.getElementsByTagName("*").length
, но это только дает мне текущую сумму.
Итак, если бы я удалил 2 элемента и добавил 3, он скажет, что 1 узел был затронут, где на самом деле было 5.
Любые идеи/хаки?Элементы, подверженные воздействию JavaScript-эквивалента
1
A
ответ
1
В настоящее время реализованы в Firefox, как MutationObserver
и в Chrome, как продавец-приставкой WebKitMutationObserver
:
MutationObserver = window.MutationObserver || window.WebKitMutationObserver;
var observer = new MutationObserver(function(mutations, observer) {
// fired when a mutation occurs
console.log(mutations, observer);
// ...
});
// define what element should be observed by the observer
// and what types of mutations trigger the callback
observer.observe(document, {
subtree: true,
attributes: true
//...
});
Этот пример прослушивает DOM изменения на document
и всего поддерева, и он будет срабатывать на изменения в атрибуты элемента, как а также структурные изменения. Спецификация проекта имеет полный список действительных mutation properties.
Вы знаете, что вы опечатываете 'длину', правильно? – CaptainCarl
Спасибо, что заметили, это моя стандартная опечатка. Кажется, я не могу правильно напечатать его с первой попытки: P Но опечатка не решает проблему, с которой я столкнулся –