2012-02-27 18 views
31

Eventuali duplicati:
Detect changes in the DOMC'è qualche evento "on DOM change"?

Devo installare un gestore di eventi, che dovrebbe sparare ogni volta che qualcosa viene aggiunto/modificato/rimosso sul DOM. This answer non funziona nel mio caso. Il DOM può essere modificato da sviluppatori di terze parti, e su ogni modifica DOM, è necessario eseguire il nostro script per convalidare il codice. L'evento non dovrebbe sparare su input/textarea/select change.

Facciamo non targetizza tutti i browser. Finché funziona su Webkit (Chrome, Safari), è abbastanza buono.

Qualche idea?

+6

Qualcuno ha il link al dubbio che questo è un esatto duplicato di? Sono venuto qui da Google. – travis

+5

@travis: non duplicato esatto, ma chiuso: http://stackoverflow.com/questions/3219758/detect-changes-in-the-dom – Sherzod

+2

@travis: ho effettivamente trovato la risposta adatta al mio caso: utilizzando 'DOMSubtreeModified' evento, ma è necessario verificare il supporto del browser. Webkit funziona bene con esso. – Sherzod

risposta

3

Non penso che ci sia un tale evento su tutti i browser. Vorrei andare con un evento personalizzato e attivarlo ogni volta che manipolo il dom.

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

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

Il problema indica che dom è manipolato da una terza parte. quindi questo non funzionerà – Myster

+1

'domChanged' dovrebbe essere una costante definita in un modulo eventi. Ad es., Export const domInjected = 'myDOMInjected'; '(ES6) Potresti anche voler fare attenzione a usare qualcosa che potrebbe già esistere nel prossimo futuro ... come DOMNodeInserted –

Problemi correlati