Tôi đang tìm kiếm một cách dễ dàng để theo dõi một đối tượng hoặc biến cho các thay đổi và tôi đã tìm thấy Object.watch()
, được hỗ trợ trong trình duyệt Mozilla, nhưng không được hỗ trợ trên IE. Vì vậy, tôi bắt đầu tìm kiếm xung quanh để xem liệu có ai đã viết một số loại tương đương hay không.Object.watch() cho tất cả các trình duyệt?
Điều duy nhất tôi tìm thấy là a jQuery plugin, nhưng tôi không chắc đó có phải là cách tốt nhất để đi hay không. Tôi chắc chắn sử dụng jQuery trong hầu hết các dự án của tôi, vì vậy tôi không lo lắng về khía cạnh jQuery ...
Dù sao, câu hỏi: Ai đó có thể chỉ cho tôi ví dụ làm việc của plugin jQuery đó? Tôi đang gặp sự cố khi hoạt động ...
Hoặc, có ai biết về bất kỳ giải pháp thay thế nào tốt hơn sẽ hoạt động trên trình duyệt không?
Cập nhật sau câu trả lời:
Cảm ơn tất cả mọi người cho câu trả lời! Tôi đã thử mã được đăng tại đây: http://webreflection.blogspot.com/2009/01/internet-explorer-object-watch.html
Nhưng tôi dường như không làm cho nó hoạt động với IE. Các mã dưới đây hoạt động tốt trong Firefox, nhưng không có gì trong IE. Trong Firefox, mỗi lần watcher.status
được thay đổi, document.write()
trong số watcher.watch()
được gọi và bạn có thể xem kết quả trên trang. Trong IE, điều đó không xảy ra, nhưng tôi có thể thấy rằng watcher.status
đang cập nhật giá trị, bởi vì cuộc gọi document.write()
cuối cùng hiển thị giá trị chính xác (trong cả IE và FF). Nhưng, nếu chức năng gọi lại không được gọi, thì đó là loại vô nghĩa ... :)
Tôi có thiếu gì đó không?
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 bạn có thể sử dụng onPropertyChange trong IE – scunliffe
Thay document.write() với alert(). Nó sẽ hoạt động tốt. –