Należy pamiętać, że oba Object.Watch
i Object.Observe
są obecnie przestarzałe (stan na czerwiec 2018 r.).
Szukałem łatwego sposobu monitorowania obiektu lub zmiennej pod kątem zmian i stwierdziłem Object.watch()
, że jest to obsługiwane w przeglądarkach Mozilla, ale nie w IE. Zacząłem więc rozglądać się po okolicy, żeby sprawdzić, czy ktoś napisał jakiś odpowiednik.
Jedyne, co znalazłem, to wtyczka jQuery , ale nie jestem pewien, czy to najlepszy sposób. Z pewnością używam 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 mi pokazać działający przykład tej wtyczki jQuery? Mam problem, żeby to zadziałało ...
A może ktoś zna lepsze alternatywy, które działałyby w różnych przeglądarkach?
Zaktualizuj po odpowiedziach :
Dziękuję 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ć, by działało z IE. Poniższy kod działa dobrze w przeglądarce Firefox, ale nic nie robi w IE. W przeglądarce Firefox za każdym razem, gdy watcher.status
jest zmieniany, wywoływana jest document.write()
in watcher.watch()
i można zobaczyć wynik na stronie. W IE tak się nie dzieje, ale widzę, że watcher.status
jest to aktualizacja wartości, ponieważ ostatnie document.write()
wywołanie pokazuje poprawną wartość (zarówno w IE, jak i FF). Ale jeśli funkcja zwrotna nie zostanie wywołana, to jest to trochę bezcelowe ... :)
Czy coś mi brakuje?
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>");