我想在所有元素上实现一个名为myColor
的假样式。在元素上设置myColor
样式时,实际的color
应设置为相同的值。这样做的明显方法是在__defineSetter__
上使用__defineGetter__
和CSSStyleDeclaration.prototype
。
这是我的实现http://jsfiddle.net/ghostoy/jJ2GC/,一旦单击SetMyColor按钮,就会得到预期的结果,文本的颜色变为红色,并显示“将颜色设置为:红色”。但是,未按预期调用设置器。
==更新==
在不同的浏览器(webkit / mozilla / msie)上,它们对非标准样式使用不同的带前缀样式名称。例如,Chrome使用webkitTransition
,Firefox使用mozTransition
,MSIE使用msTransition
。但是,我希望使用msTransition
的应用程序无需修改即可在带有webkitTransition
的Chrome上正确运行。
我的问题是:
为什么不调用我的二传手?
如何实施这种假冒伪劣风格?
最佳答案
您正在处理宿主对象,但不能保证它们的行为类似于本机JavaScript对象。 ECMAScript规范特别声明宿主对象与本地对象不受相同规则的约束。当前的浏览器实现方式各不相同,并且旧版本的IE根本不提供宿主对象的原型,因此,我强烈建议您不要尝试这样做。请使用包装对象作为DOM元素。
关于javascript - CSSStyleDeclaration.prototype上的defineGetter和defineSetter,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7949721/