Szukałem łatwego sposobu na monitorowanie obiektu lub zmiennej pod kątem zmian i znalazłem Object.watch()
, który jest obsługiwany w przeglądarkach Mozilli, ale nie w IE. Zacząłem więc szukać, czy ktoś napisał coś w rodzaju odpowiednika.Object.watch() dla wszystkich przeglądarek?
Jedyna rzecz, jaką odkryłem, to a jQuery plugin, ale nie jestem pewien, czy to najlepszy sposób. Z pewnością korzystam z jQuery w większości moich projektów, więc nie martwię się o aspekt jQuery ...
W każdym razie pytanie: Czy ktoś może pokazać mi działający przykład tej wtyczki jQuery? Mam problemy z działaniem ...
Czy ktoś wie o lepszych alternatywach, które działają w przeglądarce?
Aktualizacja po odpowiedziach:
Dzięki wszystkim za odpowiedzi! Wypróbowałem kod zamieszczony tutaj: http://webreflection.blogspot.com/2009/01/internet-explorer-object-watch.html
Ale nie mogłem sprawić, żeby działało z IE. Poniższy kod działa poprawnie w Firefoksie, ale nie robi nic w IE. W przeglądarce Firefox za każdym razem, gdy zmieniono watcher.status
, wywoływane jest document.write()
w watcher.watch()
i można zobaczyć dane wyjściowe na stronie. W IE tak się nie dzieje, ale widzę, że watcher.status
aktualizuje wartość, ponieważ ostatnie wywołanie document.write()
pokazuje poprawną wartość (zarówno w IE, jak i FF). Ale jeśli funkcja wywołania zwrotnego nie zostanie wywołana, to jest to bezsensowne ... :)
Czy brakuje mi czegoś?
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 można wykorzystać onPropertyChange w IE – scunliffe
Wymień document.write() z alert(). Powinno działać dobrze. –