Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.02.2013, 16:16
Кандидат Javascript-наук
Отправить личное сообщение для Bebarr Swallow Посмотреть профиль Найти все сообщения от Bebarr Swallow
 
Регистрация: 17.03.2011
Сообщений: 113

MutationObserver
Подскажите пожалуйста. Раньше использовал событие DOMSubtreeModified, теперь подсказали что оно очень не эффективно и нужно использовать MutationObserver.

Так вот, раньше было так:
document.addEventListener("DOMSubtreeModified", myFnc, false);
function myFunc() {
  // получаю список элементов с классом 'img' и без класса 'wellDone'
  // даю на обработку массив элементов
}


5-минутных попыток самому въехать в тему не хватило. Надеюсь подскажите как отловить новые элементы с классом img (которые раскиданные по DOM, но имеют общего родителя body)
Ответить с цитированием
  #2 (permalink)  
Старый 15.02.2013, 16:19
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Вы не имеете контроля над html-документом? Вы делаете расширение для браузера?
Ответить с цитированием
  #3 (permalink)  
Старый 15.02.2013, 16:20
Кандидат Javascript-наук
Отправить личное сообщение для Bebarr Swallow Посмотреть профиль Найти все сообщения от Bebarr Swallow
 
Регистрация: 17.03.2011
Сообщений: 113

Да
Ответить с цитированием
  #4 (permalink)  
Старый 15.02.2013, 16:33
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

https://developer.mozilla.org/en-US/...tationObserver
Ответить с цитированием
  #5 (permalink)  
Старый 15.02.2013, 17:33
Кандидат Javascript-наук
Отправить личное сообщение для Bebarr Swallow Посмотреть профиль Найти все сообщения от Bebarr Swallow
 
Регистрация: 17.03.2011
Сообщений: 113

Я оттуда и читал.
Ответить с цитированием
  #6 (permalink)  
Старый 15.02.2013, 18:07
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

В чем возникла проблема?
Ответить с цитированием
  #7 (permalink)  
Старый 15.02.2013, 18:36
Кандидат Javascript-наук
Отправить личное сообщение для Bebarr Swallow Посмотреть профиль Найти все сообщения от Bebarr Swallow
 
Регистрация: 17.03.2011
Сообщений: 113

Mozilla Firefox тупо записал насмерть.. xD

Писал так:
// select the target node
var target = document.querySelector('.img'); // сейчас я понял что нужно указать body
 
// create an observer instance
var observer = new MutationObserver(function(mutations) {
    mutations.forEach(function(mutation) {
        if(/img/.test(mutation.target.className)) // как тогда отлавливать новые .img?
          mutation.target.style.outline = "1px solid red"
    });    
});

// configuration of the observer:
var config = { attributes: true, childList: true, characterData: true }

// pass in the target node, as well as the observer options
observer.observe(target, config);

// later, you can stop observing
//observer.disconnect();
Ответить с цитированием
  #8 (permalink)  
Старый 15.02.2013, 19:05
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от Bebarr Swallow
записал насмерть
Ну он описался от смеха читая твой код

Ты подписываешься на "событие" изменения атрибута, и тут же сам изменяешь атрибут style => рекурсия. Подписывайся только на нужные изменения.
Ответить с цитированием
  #9 (permalink)  
Старый 15.02.2013, 19:56
Кандидат Javascript-наук
Отправить личное сообщение для Bebarr Swallow Посмотреть профиль Найти все сообщения от Bebarr Swallow
 
Регистрация: 17.03.2011
Сообщений: 113

Ну да, во блин прокол.
Нуб же

А че мне надо то? Я думаю так - subtree и childList. Потом еще попробую
Ответить с цитированием
  #10 (permalink)  
Старый 15.02.2013, 20:07
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Наверное subtree достаточно будет.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
MutationObserver или Наблюдатель Shitbox2 jQuery 12 11.12.2014 12:51
Правильное использование MutationObserver Magneto Общие вопросы Javascript 5 04.08.2012 19:51