【发布时间】:2010-11-04 23:32:17
【问题描述】:
请注意,Object.Watch 和 Object.Observe 现在都已弃用(截至 2018 年 6 月)。
我一直在寻找一种简单的方法来监视对象或变量的变化,我找到了Object.watch(),它在 Mozilla 浏览器中受支持,但在 IE 中不受支持。所以我开始四处寻找,看看是否有人写过类似的东西。
我发现的唯一东西是a jQuery plugin,但我不确定这是否是最好的选择。我当然在我的大部分项目中都使用 jQuery,所以我并不担心 jQuery 方面...
不管怎样,问题是:有人可以给我看一个该 jQuery 插件的工作示例吗?我在使它工作时遇到问题......
或者,有没有人知道可以跨浏览器工作的更好的替代方案?
回答后更新:
感谢大家的回复!我尝试了这里发布的代码: http://webreflection.blogspot.com/2009/01/internet-explorer-object-watch.html
但我似乎无法使其与 IE 一起使用。下面的代码在 Firefox 中运行良好,但在 IE 中没有任何作用。在Firefox中,每次更改watcher.status,都会调用watcher.watch()中的document.write(),您可以在页面上看到输出。在 IE 中,这不会发生,但我可以看到 watcher.status 正在更新该值,因为最后一个 document.write() 调用显示了正确的值(在 IE 和 FF 中)。但是,如果回调函数没有被调用,那就没有意义了...... :)
我错过了什么吗?
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 你可以在 IE 中使用 onPropertyChange
-
将 document.write() 替换为 alert()。它应该可以正常工作。
标签: javascript jquery dom-events