MutationObserver или Наблюдатель
В продолжение этой темы http://javascript.ru/forum/misc/3037...nobserver.html
Нужно отслеживать изменения dom в определенном контейнере. Наверное, лучше подойдет MutationObserver, но по нему мало информации. В частности не нашел, в каких браузерах он поддерживается на данный момент. Подскажите, если знаете. Ну и на русском никакого руководства для быстрого старта тоже нет. Второй вариант - паттерн Наблюдатель. Где можно взять наиболее вменяемые его реализации? В jQuery не встроили еще? |
DOMSubtreeModified ие9+ и всеми остальными
|
А как он там называется? В хроме и сафари, например, MutationObserver не работает, там вместо него WebKitMutationObserver
|
|
Врубился. Не то искал просто
|
Цитата:
Ка я уже писал: Так как 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); // проверяем изменения каждую секунду |
> Mutations Events (DOMSubtreeModified - одно из таких событий) являются очень требовательными к вычеслительным рессурсам
бенчмарки в студию > разработчики браузеров рекомендуют использовать MutationObserver сколько браузеров его поддерживают? > Еще как вариант можно написать свой наблюдатель за изменением DOM дерева. угу, сериализация всего поддерева - это куда быстрее чем всплытие событий > проверяем изменения каждую секунду и получится тупящий интерфейс |
кроме как нагадить в карму ничего умнее не придумал?
|
Цитата:
А ну да ты настолько крут что производители браузеров тебе не указ. А карма на то она и есть чтоб оценивать посты, не нравится как здесь (на форуме) устроено все - так не пользуйся. |
> я говорю что производители браузеров отказались от Mutations Events
каких конкретно браузеров? начиная с каких версий их поддержки больше не будет? > А ты мне о бенчмарках то есть подтвердить свои слова цифрами ты не можешь? |
Цитата:
https://developer.mozilla.org/en-US/...vent_reference https://developer.mozilla.org/en-US/...utation_events https://groups.google.com/forum/?fro...rm/L0Lx11u5Bvs https://groups.google.com/forum/#!to...rm/UH2VqFQRTDA Ну и цифры, для тебя бедняжки с засохшими рученьками: Цитата:
Цитата:
|
цитаты с форумов - это всё конечно замечательно, но где конкретные измерения? сколько узлов? как добавлялись? сколько обработчиков? где располагались?
и спрашиваю я всё это не потому что у меня руки отсохли, а потому что знаю что для одного поддерева всплывает ровно одно событие. во всех браузерах кроме ие. и вот в ие при большом числе изменяющихся узлов это может привести к тормозам. но это проблема конкретной реализации а не спецификации. ты же предлагаешь использовать апи которое поддерживают лишь 2 браузера потому что по слухам оно вроде как быстрее. |
Кто-нибудь сравнивал по нагрузке на браузер и прочие бенчмарки между MutationObservers и проверками нод setInterval'ами?
|
Часовой пояс GMT +3, время: 08:06. |