06.11.2015, 16:06
|
|
Модератор
|
|
Регистрация: 27.04.2010
Сообщений: 3,417
|
|
FINoM, плохо доку прочитал) Там есть фильтры, можно слушать только те атрибуты, которые тебе нужны (смотри "attributeFilter").
И да, раньше были MutationEvents, они были синхронными, и вот это было действительно медленно.
|
|
06.11.2015, 16:07
|
|
Модератор
|
|
Регистрация: 27.04.2010
Сообщений: 3,417
|
|
И ещё: по поводу value -- меня полностью удовлетворяет oninput event (который, кстати, срабатывает и для элементов с contenteditable="true").
|
|
06.11.2015, 16:09
|
|
Новичок
|
|
Регистрация: 05.09.2010
Сообщений: 2,298
|
|
trikadin, дык, понятно, я могу слушать oninput, но я хочу слушать изменение свойства, а не DOM событие или изменение атрибута.
|
|
06.11.2015, 16:48
|
Аспирант
|
|
Регистрация: 06.11.2015
Сообщений: 68
|
|
Сообщение от FINoM
|
Судя по доке он слушает все изменения ноды, а это медленно.
|
Да вроде нет, там конкретно указывается, что слушать, а что нет. И непонятно, зачем тебе тут скорость нужна вообще. Он отрабатывает только на событие. Что у тебя, миллион событий в секунду чтоли происходит?
|
|
06.11.2015, 16:59
|
|
Новичок
|
|
Регистрация: 05.09.2010
Сообщений: 2,298
|
|
Сообщение от loljs
|
Что у тебя, миллион событий в секунду чтоли происходит?
|
Я хочу реализовать двусторонний байндинг, а там да, может быть очень много элементов.
|
|
06.11.2015, 19:39
|
|
Модератор
|
|
Регистрация: 27.04.2010
Сообщений: 3,417
|
|
FINoM, так чем MutationObserver не устраивает, в итоге? Если ты начнёшь наблюдать за одним атрибутом value, то ты получишь оповещение о его изменении, что тебе и нужно, и при этом это будет асинхронно, что хорошо, ибо не тормозит отрисовку DOM'а.
|
|
06.11.2015, 19:57
|
|
Новичок
|
|
Регистрация: 05.09.2010
Сообщений: 2,298
|
|
trikadin, я имею в виду не атрибут а свойство. Его разве можно слушать?
|
|
06.11.2015, 20:12
|
|
Модератор
|
|
Регистрация: 27.04.2010
Сообщений: 3,417
|
|
FINoM, ну, ты узнаёшь об обновлении атрибута, и, соответственно, свойства, которое с ним синхронизировано. Не понимаю, видимо, в чём твоя проблема.
|
|
06.11.2015, 20:14
|
|
Новичок
|
|
Регистрация: 05.09.2010
Сообщений: 2,298
|
|
trikadin, эм, я никогда не работаю с атрибутами, если есть возможность изменить свойство.
|
|
06.11.2015, 20:37
|
|
Модератор
|
|
Регистрация: 27.04.2010
Сообщений: 3,417
|
|
Сообщение от FINoM
|
trikadin, эм, я никогда не работаю с атрибутами, если есть возможность изменить свойство.
|
И? Проблема-то в чём? Вряд ли ты добавляешь DOM-объекту нестандартные свойства (у которых нет сопоставленных им атрибутов), а даже если, то вот как раз их ты можешь объявить аксессорами, а те свойства, у которых есть сопоставленные атрибуты, ты можешь слушать через MutationObserver.
<a id="search-link" href="http://google.com/" data-search="google" title="Гугл">Google</a>
<script>
'use strict';
const
link = document.querySelector('#search-link'),
observer = new MutationObserver((mutationsList) => {
console.log(mutationsList);
});
observer.observe(link, {
childList: true,
attributes: true
});
link.href = 'http://yandex.ru/';
link.title = 'Яндекс';
link.dataset.search = 'yandex';
link.textContent = 'Yandex';
</script>
Смотреть в консоль.
Последний раз редактировалось trikadin, 06.11.2015 в 21:21.
|
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
Как сделать HTML фичи? |
2chan |
Events/DOM/Window |
6 |
26.09.2014 18:50 |
|
|
|