Wie kann ich den Mutationsbeobachter von seiner Callback-Funktion trennen? Die Änderungen werden beobachtet, wie sie sollten, aber ich möchte den Beobachter nach der ersten Änderung trennen. Da die Variable des Betrachters außerhalb des Bereichs liegt, wird sie nicht getrennt. Wie kann ich die Observer-Variable an die Callback-Funktion übergeben, damit der Code funktioniert?Trennen von Mutation Observer von der Callback-Funktion
function mutate(mutations) {
mutations.forEach(function(mutation) {
if (mutation.type === 'characterData') {
console.log('1st change.');
observer.disconnect(); // Should disconnect here but observer variable is not defined.
}
else if (mutation.type === 'childList') {
console.log('2nd change. This should not trigger after being disconnected.');
}
});
}
jQuery(document).ready(function() {
setTimeout(function() {
document.querySelector('div#mainContainer p').innerHTML = 'Some other text.';
}, 2000);
setTimeout(function() {
jQuery('div#mainContainer').append('<div class="insertedDiv">New div!<//div>');
}, 4000);
var targetOne = document.querySelector('div#mainContainer');
var observer = new MutationObserver(mutate);
var config = { attributes: true, characterData: true, childList: true, subtree: true };
observer.observe(targetOne, config);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<body>
<div id="mainContainer">
<h1>Heading</h1>
<p>Paragraph.</p>
</div>
</body>
Ja, aber wie würden Sie dann die Beobachtervariable als Argument an mutate() übergeben? Könnten Sie Ihren Code ausarbeiten, damit ich ihn nicht testen kann? Ich bin interessiert zu sehen, wie Ihr Code funktionieren würde. –
Sie müssen nicht, "MutationObserver" übergibt es automatisch, genauso wie es "Mutationen" passiert. – loganfsmyth
Wie ist es, dass JS das kann? Ich habe nie eine Programmiersprache gekannt, die automatisch Argumente für Sie übergibt. Hat dieses spezielle Feature einen Namen in JS? –