Object.watch()适用于所有浏览器?

我正在寻找一种简单的方法来监视对象或变量的变化,并且我发现了Object.watch() ,它在Mozilla浏览器中受支持,但不支持IE。 于是我开始四处搜寻,看看有没有人写过某种类似的东西。

关于我发现的唯一一件事是一个jQuery插件,但我不确定这是否是最好的方法。 我在大多数项目中肯定使用jQuery,所以我不担心jQuery方面的问题......

无论如何,这个问题:有人可以给我看一个这个jQuery插件的实例吗? 我在解决问题方面遇到了问题......

或者,有没有人知道任何可以跨浏览器工作的更好的替代方案?

答案后更新

感谢大家的回应! 我尝试了这里发布的代码:http://webreflection.blogspot.com/2009/01/internet-explorer-object-watch.html

但我似乎无法让它与IE一起工作。 下面的代码可以在Firefox中正常工作,但在IE中什么也不做。 在Firefox中,每次更改watcher.status ,都会watcher.status document.write()中的watcher.watch() ,您可以在页面上看到输出。 在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>");

(对不起,交叉发布,但这个答案我给类似的问题在这里工作很好)

前段时间我为此创建了一个小对象。 它适用于IE8,Safari,Chrome,Firefox,Opera等。


该插件只是使用计时器/间隔来重复检查对象上的更改。 也许够好,但我个人希望作为观察者更直接。

这里是一个尝试带来watch /不unwatch IE:http: unwatch

它确实改变了Firefox添加观察者的方式。 代替 :

var obj = {foo:'bar'};
obj.watch('foo', fooChanged);

你做:

var obj = {foo:'bar'};
var watcher = createWatcher(obj);
watcher.watch('foo', fooChanged);

没有那么甜蜜,但作为观察员,您立即得到通知。


2015年末更新

Object.observe()现在被取消。 对不起人!

2015年更新

使用ES7中的Object.observe()。

这是一个polyfill。

链接地址: http://www.djcxy.com/p/3949.html

上一篇: Object.watch() for all browsers?

下一篇: scrollTop animation without jquery