Come posso emulare l'oggetto MutationObserver nei browser che non lo supportano?

Come posso emulare l'oggetto MutationObserver nei browser che non lo supportano?

L'oggetto MutationObserver non è disponibile in alcuni browser (come ad esempio IE10 ed inferiori). Tuttavia esiste una soluzione alternativa.

La soluzione è la seguente:


if( !MutationObserver ) {
	var MutationObserver = function( target, callback ) {
		
		this.target = target;
		callback = callback || function() {};
		
		this.timer = null;
		
		this.observe = function() {
			var self = this;
			self.timer = setInterval(function() {
				callback( self.target );
			}, 200);
		}
		
		this.disconnect = function() {
			clearInterval( this.timer );
			this.timer = null;	
		}
	}
}

In pratica abbiamo creato un timer che ad intervalli regolari invoca una funzione di callback sull'elemento da monitorare. Esempio d'uso:


var target = document.getElementById( "test" );

var observer = new MutationObserver( target, function( element ) {
	var cls = element.className;
	console.log( cls );
});

Torna su