我想在所有元素上实现一个名为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/

10-12 14:58