Stavo cercando un modo semplice per monitorare un oggetto o una variabile per le modifiche, e ho trovato Object.watch()
, che è supportato nei browser Mozilla, ma non in IE. Così ho iniziato a cercare in giro per vedere se qualcuno avesse scritto una sorta di equivalente.Object.watch() per tutti i browser?
Circa l'unica cosa che ho trovato è stato a jQuery plugin, ma non sono sicuro se questo è il modo migliore per andare. Certamente uso jQuery nella maggior parte dei miei progetti, quindi non sono preoccupato per l'aspetto jQuery ...
In ogni caso, la domanda: Qualcuno può mostrarmi un esempio funzionante di quel plugin jQuery? Ho problemi a farlo funzionare ...
O qualcuno sa di alternative migliori che funzionerebbero su browser incrociato?
Aggiornamento dopo risposte:
Grazie a tutti per le risposte! Ho provato il codice postato qui: http://webreflection.blogspot.com/2009/01/internet-explorer-object-watch.html
Ma non riuscivo a farlo funzionare con IE. Il codice qui sotto funziona bene in Firefox, ma non fa nulla in IE. In Firefox, ogni volta che viene modificato watcher.status
, viene chiamato il numero document.write()
in watcher.watch()
ed è possibile visualizzare l'output sulla pagina. In IE, ciò non accade, ma posso vedere che watcher.status
sta aggiornando il valore, perché l'ultima chiamata document.write()
mostra il valore corretto (sia in IE che in FF). Ma, se la funzione di callback non viene chiamata, allora è un po 'inutile ... :)
Mi manca qualcosa?
var options = {'status': 'no status'},
watcher = createWatcher(options);
watcher.watch("status", function(prop, oldValue, newValue) {
document.write("old: " + oldValue + ", new: " + newValue + "<br>");
return newValue;
});
watcher.status = 'asdf';
watcher.status = '1234';
document.write(watcher.status + "<br>");
IIRC è possibile utilizzare onPropertyChange in IE – scunliffe
Sostituire document.write() con alert(). Dovrebbe funzionare bene. –