Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   JS.next(стандарты, фичи, движки) (https://javascript.ru/forum/offtopic/50248-js-next-standarty-fichi-dvizhki.html)

trikadin 06.11.2015 16:06

FINoM, плохо доку прочитал) Там есть фильтры, можно слушать только те атрибуты, которые тебе нужны (смотри "attributeFilter").

И да, раньше были MutationEvents, они были синхронными, и вот это было действительно медленно.

trikadin 06.11.2015 16:07

И ещё: по поводу value -- меня полностью удовлетворяет oninput event (который, кстати, срабатывает и для элементов с contenteditable="true").

FINoM 06.11.2015 16:09

trikadin, дык, понятно, я могу слушать oninput, но я хочу слушать изменение свойства, а не DOM событие или изменение атрибута.

loljs 06.11.2015 16:48

Цитата:

Сообщение от FINoM (Сообщение 394803)
Судя по доке он слушает все изменения ноды, а это медленно.

Да вроде нет, там конкретно указывается, что слушать, а что нет. И непонятно, зачем тебе тут скорость нужна вообще. Он отрабатывает только на событие. Что у тебя, миллион событий в секунду чтоли происходит?

FINoM 06.11.2015 16:59

Цитата:

Сообщение от loljs
Что у тебя, миллион событий в секунду чтоли происходит?

Я хочу реализовать двусторонний байндинг, а там да, может быть очень много элементов.

trikadin 06.11.2015 19:39

FINoM, так чем MutationObserver не устраивает, в итоге? Если ты начнёшь наблюдать за одним атрибутом value, то ты получишь оповещение о его изменении, что тебе и нужно, и при этом это будет асинхронно, что хорошо, ибо не тормозит отрисовку DOM'а.

FINoM 06.11.2015 19:57

trikadin, я имею в виду не атрибут а свойство. Его разве можно слушать?

trikadin 06.11.2015 20:12

FINoM, ну, ты узнаёшь об обновлении атрибута, и, соответственно, свойства, которое с ним синхронизировано. Не понимаю, видимо, в чём твоя проблема.

FINoM 06.11.2015 20:14

trikadin, эм, я никогда не работаю с атрибутами, если есть возможность изменить свойство.

trikadin 06.11.2015 20:37

Цитата:

Сообщение от 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>


Смотреть в консоль.


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