defineGetter& CSSStyleDeclaration.prototype上的defineSetter

时间:2011-10-31 03:21:48

标签: javascript

我想在所有元素上实现一个名为myColor的假样式。在元素上设置myColor样式时,应使用相同的值设置实际color。这样做的明显方法是在__defineSetter__上使用__defineGetter__CSSStyleDeclaration.prototype

以下是我的实施http://jsfiddle.net/ghostoy/jJ2GC/,预期结果是点击 SetMyColor 按钮后,文字的颜色变为红色并显示“将颜色设置为:红色”。但是,不会按预期调用setter。

==已更新==

在不同的浏览器(webkit / mozilla / msie)上,它们为非标准样式使用不同的前缀样式名称。例如,Chrome使用webkitTransition,Firefox使用mozTransition,MSIE使用msTransition。但是,我希望使用msTransition的应用可以在webkitTransition的Chrome上正常运行而无需修改。

我的问题是:

  1. 为什么不调用我的二传手?
  2. 如何实现这样的假风格?

2 个答案:

答案 0 :(得分:0)

您正在处理主机对象,并且无法保证它们的行为与本机JavaScript对象相同。 ECMAScript规范明确指出主机对象不受与本机对象相同的规则约束。当前的浏览器实现各不相同,IE的旧版本根本不提供主机对象的原型,所以我强烈建议不要尝试这样做。请改为使用DOM元素的包装器对象。

答案 1 :(得分:0)

似乎它适用于最新的Chrome。