2013-05-18 5 views
5

Так что я злился на мой мозг об использовании MutationObserver, и я не добился какого-либо прогресса. Я читал об этом на сайте W3C и в MDN. Когда вы читали его в MDN, все это имело смысл до примера.Confused О MutationObserver

// select the target node 
var target = document.querySelector('#some-id'); 

// create an observer instance 
var observer = new MutationObserver(function(mutations) { 
    mutations.forEach(function(mutation) { 
    console.log(mutation.type); 
    }); 
}); 

// configuration of the observer: 
var config = { attributes: true, childList: true, characterData: true }; 

// pass in the target node, as well as the observer options 
observer.observe(target, config); 

// later, you can stop observing 
observer.disconnect(); 

Часть, с которой я столкнулся, создает экземпляр наблюдателя, не уверенный в синтаксисе того, что там есть. Также в консоли я получаю «TypeError: Value не реализует интерфейс Node». Независимо от того, какие примеры я просмотрел и попытался использовать; заменив селектора в примере на нужные селектора jQuery (также селекторы без jQ возвратили ту же проблему).

+0

'MutationObserver' не _not_, связанный с jQuery. Селектор запросов может показаться похожим на шипение, но они не используют реализацию. – Halcyon

+0

У вас есть элемент с id "some-id"? – bfavaretto

+0

@Frits van Campen Я знаю, что они не связаны, я использую библиотеку jQ, хотя и использую ли я селектор jQ или нет, я получаю сообщение TypeError. –

ответ

0

Сначала вы определенно не должны использовать селекторы jQ, поскольку они не являются элементами узла. Во-вторых, вы должны быть уверены, что селектор запросов возвращается не null. Чтобы убедиться в том, что вы впервые наблюдаете на document.body: это, безусловно, объект Node. Что-то вроде

(
    new MutationObserver(function(mutationEventList){ 
     console.log(mutationEventList) 
    }) 
) 
.observe(document.body, { 
    childList: true, 
    attributes: true, 
    characterData: true 
}) 

Когда вы ознакомитесь с таргетингом наблюдателя и понять варианты значений MutationObserverInit (они описаны не так хорошо, как мог) вы будете иметь возможность работать с mutationObserver права.