MutationObserver
-
Ранее мне было необходимо чучу подредактировать DOM в момент загрузки элементов или сразу после, поэтому я в плитке "выполнять при каждой загрузке браузера" установил нехитрый обработчик событий
document.addEventListener("DOMSubtreeModified", foo);
все было пока foo чучу не разрослося, и превратилось в монстра который имеет больше одного ядра и увеличивает время загрузки страницы в десятки раз. Я решил проблему разделением, но хотелось бы иметь универсальное решение.
тут я должен заметить, что я знаю причину столь адовой загрузки процессора - у меня при каждой модификации DOM изменяются атрибуты во !!!ВСЕХ элементах, каждый раз. Я мог бы избавится от изменения атрибутов во всех элементах. И вероятно мне следует использовать другое событие, например DOMNodeInserted. Но в погоне за производительностью я принял решение переделать логику с Мутацион Евент, на Мутацион Наблюдатель. Но потому что я его не понимал мой код не работает.например я решил что-то что угодно изменить при появлении элемента и попытался установит наблюдателя таким образом.
var t = document.getElementById(VAR_ID); var o = new MutationObserver(function(mutations) { mutations.forEach(function(mutation) { document.title = "opop"; }); }); var c = { attributes: true, childList: true, characterData: true } o.observe(t, c);
с предсказуемым результатом. Если кто знает что я понял не так?
-
работает в консоли как я бы и хотел, в екшенах при каждой загрузке и яваскрипт не получилось.