Niedawno natknąłem się na tę niesamowitą funkcję MutationObserver
, która pozwala śledzić zmiany w dowolnym elemencie domowym. Użyłem kodu, który był wyświetlany w sieci programistów Mozilli, ale nie można go uruchomić. Jest to kod użyłem (link):Jak korzystać z MutationObserver?
// create an observer instance
var target = document.querySelector('#something');
console.log(target);
var observer = new WebKitMutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
console.log("Success");
//$('#log').text('input text changed: "' + target.text() + '"');
//console.log(mutation, mutation.type);
});
});
observer.observe(target, { attributes: true, childList: true, characterData: true });
//observer.disconnect(); - to stop observing
// test case
setInterval(function(){
document.querySelector('#something').innerHTML = Math.random();
},1000);
Powyższy kod nie wydaje się działać. Jednak jeśli zmodyfikować ten sam kod z odrobiną jQuery, wszystko wydaje się działać dobrze (Demo here). Czy jest coś, czego mi brakuje w dokumentach lub po prostu błędnie interpretuję funkcję obserwatora.
Dzięki za wyjaśnienia. Powinienem zrobić więcej badań, zanim przejdę do przesłuchania. :) –
Jest to także argument, aby trzymać się narzędzi takich jak jQuery, nawet gdy natywny JavaScript i DOM API stały się potężniejsze. Bazowy interfejs API nie (i IMO nie powinien) ukrywać tego typu szczegółów technicznych, więc istnieje dodatkowa korzyść dla dodatkowej warstwy abstrakcji użyteczności. –