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