- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在所有元素上实现名为 myColor
的假样式。在元素上设置 myColor
样式时,实际的 color
应设置为相同的值。执行此操作的明显方法是在 CSSStyleDeclaration.prototype
上使用 __defineSetter__
和 __defineGetter__
。
这是我的实现 http://jsfiddle.net/ghostoy/jJ2GC/预期的结果是单击SetMyColor按钮后,文本的颜色变为红色并显示“将颜色设置为:红色”。但是,setter 并未按预期调用。
==已更新==
在不同的浏览器(webkit/mozilla/msie)上,它们对非标准样式使用不同的前缀样式名称。例如,Chrome 使用 webkitTransition
,Firefox 使用 mozTransition
,MSIE 使用 msTransition
。不过,我希望使用 msTransition
的应用可以通过 webkitTransition
在 Chrome 上正确运行,无需修改。
我的问题是:
最佳答案
您正在处理宿主对象,并且不能保证它们的行为会像 native JavaScript 对象一样。 ECMAScript 规范特别指出,宿主对象不受与 native 对象相同的规则的约束。当前的浏览器实现各不相同,并且旧版本的 IE 根本不提供主机对象的原型(prototype),因此我强烈建议不要尝试这样做。请对 DOM 元素使用包装对象。
关于javascript - CSSStyleDeclaration.prototype 上的defineGetter 和defineSetter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7949721/
var a = {}; a.__defineGetter__('test',function() {return 5;}); var i ="test"; 除了 a[i](同时使用 var i 执行
为什么每次迭代都会这样: var o = {}; var foo = [['a',1],['b',2],['c',3],['d',4],['e',5]]; for(var i = 0; i < 5;
我是一名优秀的程序员,十分优秀!