Hola,
tengo este codigo:
<div id="container" data-room="room1">some content</div> <button onclick="changeroom('room2');">Change</button>y se supone que este observador de mutaciones ejecuta una función cuando cambian los datos en la sala de datos
new MutationObserver(() => { const lastroom = "room1"; if (document.getElementById("container").dataset.room !== "room1") { console.log('changed room') } }).observe(document, {subtree: true, childList: true});pero no hace nada en absoluto. Puedes probarlo aquí: https://jsfiddle.net/5hdjfg4t/
¿porqué es eso?
Gracias.
No está agregando ni eliminando ningún elemento, por lo que un observador de childList no se activa. En su lugar, debe observar los cambios en los attributes .
const container = document.getElementById("container"); function changeroom(room) { container.dataset.room = room; } new MutationObserver(() => { if (container.dataset.room !== "room1") { console.log('changed room') } }).observe(container, { attributes: true }); <div id="container" data-room="room1">some content</div> <button onclick="changeroom('room2');"> Change </button>Bueno, estás cambiando un atributo y no le dijiste que escuchara los cambios de atributo.
subtree: true, childList: true, attributes: true,