Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Правильное использование MutationObserver (https://javascript.ru/forum/misc/30377-pravilnoe-ispolzovanie-mutationobserver.html)

Magneto 02.08.2012 14:22

Правильное использование MutationObserver
 
В процессе работы появилась надобность отслеживать изменения в DOM-дереве. Так как Mutations Events являются очень требовательными к вычеслительным рессурсам пользователя, то разработчики браузеров рекомендуют использовать MutationObserver. MutationObserver пока работает только в Chrome и Firefox.

Вопрос: Как правильно использовать это API? Тоесть я видел примеры и документацию пытался читать. Более подробно я хотел бы узнать об параметрах которые передаются в observe:
{
  childList: true // Это указывает что нужно отслеживать изменение количества потомков
  attributes: true // Отслеживать изменение атрибутов элемента и/или атрибутов его детей?
}


А также не совсем понятные например:
{
  subtree: true, // bubbles
  characterData: true
}

и прочие.

Если есть статья на русском - то супер.

shkoder 03.08.2012 12:39

На русском не знаю, но зато очень доступно тут написано http://www.w3.org/TR/dom/
characterData - http://www.w3.org/TR/dom/#characterdata
subtree: true // изменения должны быть не только у элемента, но И у потомков
http://www.w3.org/TR/dom/#mutationobserver + 2 PageDown как использовать.
зы: можно попробовать сделать перевод для хабра. Времени жаль только нет сейчас.

shkoder 03.08.2012 14:16

Цитата:

Сообщение от Maxmaxmахimus (Сообщение 194277)
только проверка setIntervalом на изменения, только хардкор

ну или
function LikeMutationObserver(callback) {
    if (MutationObserver)
          return new MutationObserver(callback);
    else
          ;//другой способ с такими же методами, но другой реализацией
}

var observer = LikeMutationObserver(function(rec, obs){
    // ...
});

melky 03.08.2012 15:39

Цитата:

Сообщение от Maxmaxmахimus (Сообщение 194326)
Если серьезно то че за дом трансформейшен? типа изменение размеров блоков и прочее?

типа изменение размеров блоков и прочее

melky 04.08.2012 15:39

Цитата:

Сообщение от Maxmaxmахimus
это же сеттеры, и их можно сделать искуственными, чтобы функция которая устанавливает свойства блокам генерировала бы событие..

таки да, и мы даже знаем, как этот паттерн называется.

melky 04.08.2012 20:51

Цитата:

Сообщение от Maxmaxmахimus (Сообщение 194563)
у этой штуки есть название? система событий не?

точнее, наблюдатель.


Часовой пояс GMT +3, время: 20:12.