2012-02-27 10 views
31

Duplicar posibles:
Detect changes in the DOM¿Hay algún evento "en el cambio DOM"?

Necesito configurar un controlador de eventos, lo que disparará cada vez que algo se anexa/cambiado/eliminado en el DOM. This answer no funciona en mi caso. El DOM puede ser modificado por desarrolladores externos, y en cada cambio DOM, necesitamos ejecutar nuestro script para validar el código. El evento no debería activarse en input/textarea/select change.

Hacemos no target all browsers. Siempre que funcione en Webkit (Chrome, Safari), es lo suficientemente bueno.

¿Alguna idea?

+6

¿Alguien tiene el enlace a la cuestión que se trata de un duplicado exacto de? Vine aquí desde google – travis

+5

@travis: duplicado no exacto, pero cercano: http://stackoverflow.com/questions/3219758/detect-changes-in-the-dom – Sherzod

+2

@travis: De hecho encontré la respuesta que se adapta a mi caso: usando 'DOMSubtreeModified' evento, pero debe verificar el soporte del navegador. Webkit funciona bien con eso. – Sherzod

Respuesta

3

No creo que exista tal evento en todos los navegadores. Me gustaría ir con un evento personalizado y activarlo cada vez que manipulo el dom.

//Subscribe to domChanged event 
$(document).bind('domChanged', function(){ 
    alert('Dom changed'); 
}); 

//Trigger the domChanged event 
$(document).trigger('domChanged'); 
+16

El problema de dom dom está maniuplado por un tercero. entonces esto no funcionará – Myster

+1

'domChanged' debe ser una constante definida en un módulo de eventos. Por ejemplo, 'export const domInjected = 'myDOMInjected';' (ES6) Es posible que también desee tener cuidado con el uso de algo que ya exista en un futuro próximo ... como DOMNodeInserted –

Cuestiones relacionadas