Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Установка наблюдателя MutationObserver (https://javascript.ru/forum/events/80974-ustanovka-nablyudatelya-mutationobserver.html)

DDim1000 05.09.2020 10:31

Установка наблюдателя MutationObserver
 
Здравствуйте!
Подскажите, пожалуйста,.. возникло несколько вопросов по ниже приведенному коду.
Нужно отследить появления элемента...
Вопрос:
Здесь указываем тот элемент, в котором ожидаем появления нужного нам элемента, или тот элемент, появления которого мы ожидаем?: document.querySelector('#some-id');

// выбираем нужный элемент для наблюдения
var target = document.querySelector('#some-id');

// если jQuery
var target = $('#some-id')[0];
 
// создаем новый экземпляр наблюдателя
var observer = new MutationObserver(function(mutations) {
  mutations.forEach(function(mutation) {
    console.log(mutation.type);
  });    
});
 
// создаем конфигурации для наблюдателя
var config = { attributes: true, childList: true, characterData: true };
 
// запускаем механизм наблюдения
observer.observe(target,  config);
 
// позже, если надо, прекращаем наблюдение
observer.disconnect();

рони 05.09.2020 10:59

Цитата:

Сообщение от DDim1000
Здесь указываем тот элемент, в котором ожидаем появления нужного нам элемента,

Цитата:

Сообщение от DDim1000
childList: true,

:-?

Nexus 05.09.2020 11:10

Цитата:

target - A DOM Node (which may be an Element) within the DOM tree to watch for changes, or to be the root of a subtree of nodes to be watched.
Т.е. target - это элемент, за которым Observer будет наблюдать.

DDim1000 05.09.2020 11:28

А mutations.forEach(function(mutation)({}) что делает? При каждом изменении DOM ищет тот элемент, за которым установлено наблюдение?

рони 05.09.2020 14:16

:-?
Цитата:

Сообщение от DDim1000
что делает?

Цитата:

Сообщение от DDim1000
attributes: true, childList: true, characterData: true


DDim1000 26.09.2020 22:28

Подскажите, пожалуйста, почему ошибка?: Uncaught NotFoundError: Failed to execute 'observe' on 'MutationObserver': The provided node was null
// выбираем элемент, который должен появится в DOM
               var target = document.querySelector("#message-list");

function track_send(){
              
	var observer = new MutationObserver(function(mutations) { 
		mutations.forEach(function(mutation) {
                                               alert("Сработало!");  
                                    
		});
	});

	var config = { attributes: true, childList: true, characterData: true };

	observer.observe(target, config);
           
}

 $("div[data-name='send']").click(function(){
        track_send();
       //.............
});

рони 26.09.2020 23:31

Цитата:

Сообщение от DDim1000
выбираем элемент, который должен появится в DOM

фантастика! как можно выбрать, то чего нет?

DDim1000 27.09.2020 11:33

Не понял. Тогда, нужно проверку что ли ставить? А иначе, как узнать то, что появился на страницы именно тот элемент, который нужен?
Как мне узнать, когда на странице появится $('div#some-id'); ???

Nexus 27.09.2020 13:29

DDim1000, установите слушателя на родительский элемент относительно вашего div#some-id и слушайте изменения детей.

DDim1000 28.09.2020 15:04

Что-то у меня не получается.... Посмотрите, пожалуйста, код: https://jsfiddle.net/z9q3kn6w/1/


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