Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.12.2012, 21:03
Профессор
Отправить личное сообщение для Shitbox2 Посмотреть профиль Найти все сообщения от Shitbox2
 
Регистрация: 04.10.2010
Сообщений: 571

MutationObserver или Наблюдатель
В продолжение этой темы Правильное использование MutationObserver

Нужно отслеживать изменения dom в определенном контейнере. Наверное, лучше подойдет MutationObserver, но по нему мало информации. В частности не нашел, в каких браузерах он поддерживается на данный момент. Подскажите, если знаете. Ну и на русском никакого руководства для быстрого старта тоже нет.

Второй вариант - паттерн Наблюдатель. Где можно взять наиболее вменяемые его реализации? В jQuery не встроили еще?
Ответить с цитированием
  #2 (permalink)  
Старый 07.12.2012, 00:02
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

DOMSubtreeModified ие9+ и всеми остальными
__________________
.ня
Ответить с цитированием
  #3 (permalink)  
Старый 07.12.2012, 07:24
Профессор
Отправить личное сообщение для Shitbox2 Посмотреть профиль Найти все сообщения от Shitbox2
 
Регистрация: 04.10.2010
Сообщений: 571

А как он там называется? В хроме и сафари, например, MutationObserver не работает, там вместо него WebKitMutationObserver
Ответить с цитированием
  #4 (permalink)  
Старый 07.12.2012, 18:32
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

http://lmgtfy.com/?q=DOMSubtreeModified
__________________
.ня
Ответить с цитированием
  #5 (permalink)  
Старый 07.12.2012, 21:07
Профессор
Отправить личное сообщение для Shitbox2 Посмотреть профиль Найти все сообщения от Shitbox2
 
Регистрация: 04.10.2010
Сообщений: 571

Врубился. Не то искал просто
Ответить с цитированием
  #6 (permalink)  
Старый 08.12.2012, 02:17
Аватар для Magneto
Люмус, Емаксос Developer!
Отправить личное сообщение для Magneto Посмотреть профиль Найти все сообщения от Magneto
 
Регистрация: 06.05.2010
Сообщений: 677

Сообщение от tenshi
DOMSubtreeModified ие9+ и всеми остальными
Не нужно вводить пользователей в заблуждение.
Ка я уже писал: Так как Mutations Events (DOMSubtreeModified - одно из таких событий) являются очень требовательными к вычеслительным рессурсам пользователя, то разработчики браузеров рекомендуют использовать MutationObserver. И это не просто рекомендации, например расширение для браузера Firefox не проходило модерацию из-за того что я использовал DOMSubtreeModified.
И MutationObserver были специально разработаны для замены Mutations Events.

Про MutationObserver можно прочитать здесь и здесь правда на англ.

Еще как вариант можно написать свой наблюдатель за изменением DOM дерева.

// Следим за всеми елементами и их атрибутами в div с id monitored
var originalDOM = document.getElementById('monitored').innerHTML,
	actualDOM;

setInterval(function () {
	actualDOM = document.getElementById('monitored').innerHTML;

	if (originalDOM !== actualDOM) {
		originalDOM = actualDOM;

		//	...
		//	Здесь нужный код
		//	...
	}
}, 1000); // проверяем изменения каждую секунду
Ответить с цитированием
  #7 (permalink)  
Старый 08.12.2012, 12:47
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

> Mutations Events (DOMSubtreeModified - одно из таких событий) являются очень требовательными к вычеслительным рессурсам

бенчмарки в студию

> разработчики браузеров рекомендуют использовать MutationObserver

сколько браузеров его поддерживают?

> Еще как вариант можно написать свой наблюдатель за изменением DOM дерева.

угу, сериализация всего поддерева - это куда быстрее чем всплытие событий

> проверяем изменения каждую секунду

и получится тупящий интерфейс
__________________
.ня
Ответить с цитированием
  #8 (permalink)  
Старый 08.12.2012, 20:08
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

кроме как нагадить в карму ничего умнее не придумал?
__________________
.ня
Ответить с цитированием
  #9 (permalink)  
Старый 08.12.2012, 21:10
Аватар для Magneto
Люмус, Емаксос Developer!
Отправить личное сообщение для Magneto Посмотреть профиль Найти все сообщения от Magneto
 
Регистрация: 06.05.2010
Сообщений: 677

Сообщение от tenshi
> Mutations Events (DOMSubtreeModified - одно из таких событий) являются очень требовательными к вычеслительным рессурсам

бенчмарки в студию
Так о чем с тобой разговаривать? Если я говорю что производители браузеров отказались от Mutations Events и вместо него советуют или вовсе отказаться от наблюдения за DOM деревом или использовать MutationObserver. А ты мне о бенчмарках.

А ну да ты настолько крут что производители браузеров тебе не указ.

А карма на то она и есть чтоб оценивать посты, не нравится как здесь (на форуме) устроено все - так не пользуйся.
Ответить с цитированием
  #10 (permalink)  
Старый 08.12.2012, 21:49
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

> я говорю что производители браузеров отказались от Mutations Events

каких конкретно браузеров? начиная с каких версий их поддержки больше не будет?

> А ты мне о бенчмарках

то есть подтвердить свои слова цифрами ты не можешь?
__________________
.ня
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработчик click вызывается несколько раз или не всегда вызывается OlegJquery jQuery 2 21.07.2011 20:37
Объект не поддерживает это свойство или метод load_081112_0953.js 1auto1 Internet Explorer 1 13.04.2011 21:59
Найти проблему с jQuery или писать js? Saladdin Элементы интерфейса 0 17.03.2011 17:02
В зависимости от referrer выводить рекламу adsene или зорьки wlad2 Общие вопросы Javascript 12 19.12.2010 01:02
Как узнать свернуто окно браузера или нет. bar-boss Events/DOM/Window 3 25.09.2008 16:09