2013-11-18 4 views
1

Я хотел бы использовать решение JavaScript для измерения количества затронутых узлов DOM за определенный промежуток времени. Решение, которое я ищу, очень похоже на свойство, затронутое элементами, на панели инструментов Chrome.
Поскольку я хочу измерять эту клиентскую сторону, когда мое приложение находится в процессе производства, я не могу использовать панель инструментов Chrome.
Я уже пробовал document.getElementsByTagName("*").length, но это только дает мне текущую сумму.
Итак, если бы я удалил 2 элемента и добавил 3, он скажет, что 1 узел был затронут, где на самом деле было 5.
Любые идеи/хаки?Элементы, подверженные воздействию JavaScript-эквивалента

+0

Вы знаете, что вы опечатываете 'длину', правильно? – CaptainCarl

+0

Спасибо, что заметили, это моя стандартная опечатка. Кажется, я не могу правильно напечатать его с первой попытки: P Но опечатка не решает проблему, с которой я столкнулся –

ответ

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.