Bitte beachten Sie, dass Object.Watch
und Object.Observe
sind jetzt beide veraltet (Stand Juni 2018).
Ich suchte nach einer einfachen Möglichkeit, ein Objekt oder eine Variable auf Änderungen zu überwachen, und fand heraus Object.watch()
, dass dies in Mozilla-Browsern unterstützt wird, nicht jedoch im IE. Also fing ich an, mich umzusehen, ob jemand eine Entsprechung geschrieben hatte.
Das einzige, was ich gefunden habe, war ein jQuery-Plugin , aber ich bin mir nicht sicher, ob dies der beste Weg ist. Ich verwende jQuery auf jeden Fall in den meisten meiner Projekte, daher mache ich mir keine Sorgen um den jQuery-Aspekt ...
Wie auch immer, die Frage: Kann mir jemand ein funktionierendes Beispiel für dieses jQuery-Plugin zeigen? Ich habe Probleme damit es funktioniert ...
Oder kennt jemand bessere Alternativen, die browserübergreifend funktionieren würden?
Update nach Antworten :
Vielen Dank an alle für die Antworten! Ich habe den hier veröffentlichten Code ausprobiert: http://webreflection.blogspot.com/2009/01/internet-explorer-object-watch.html
Aber ich konnte es scheinbar nicht mit IE zum Laufen bringen. Der folgende Code funktioniert in Firefox einwandfrei, im IE jedoch nicht. In Firefox wird bei jeder watcher.status
Änderung das document.write()
In watcher.watch()
aufgerufen und Sie können die Ausgabe auf der Seite sehen. Im IE passiert das nicht, aber ich kann sehen, dass watcher.status
der Wert aktualisiert wird, da der letzte document.write()
Aufruf den richtigen Wert anzeigt (sowohl im IE als auch im FF). Aber wenn die Rückruffunktion nicht aufgerufen wird, ist das irgendwie sinnlos ... :)
Vermisse ich etwas
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>");