Escribí una extensión de Chrome que carga un script con run_at establecido en document_start .
Mi secuencia de comandos usa Mutation Observer para invocar algún código al agregar un elemento con id X a una determinada página web.
Ese elemento se crea cuando la página se carga por primera vez y luego se vuelve a crear cuando parte de la página se vuelve a cargar después de hacer clic en un botón.
Mi observador de mutaciones no detecta ese elemento en ninguno de los dos casos.
Sin embargo, si duplico el elemento (Herramientas para desarrolladores > Elementos > elemento > menú contextual > Elemento duplicado), entonces mi observador de mutaciones detecta el duplicado.
Realicé una prueba: cambié la identificación de algún elemento aleatorio a X . No fue detectado. Eso me ha hecho sospechar que el elemento original se crea primero y luego se asigna o actualiza su identificación. No estoy seguro de cómo podría probar o refutar esta teoría (el proceso de generar el código de la página web parece muy complejo, con capas y capas de secuencias de comandos involucradas, y tengo muy poca experiencia).
¿Tiene sentido esta teoría? ¿Puedo observar un cambio de identificación? Si la teoría no tiene sentido o si es imposible observar un cambio de identidad, ¿qué alternativas tengo?
¡Gracias!
Editar:
Mi código se ve así:
const observer = new MutationObserver(function(mutations) { mutations.forEach(function(mutation) { for (let i = 0; i < mutation.addedNodes.length; i++) { if (mutation.addedNodes[i].id == "X") { alert("X detected!"); }; }; }); }); observer.observe(document, { attributes: true, characterData: true, childList: true, subtree: true });