2011-11-22 96 views
1

是否有可能在JavaScript中覆盖CSSStyleDeclaration对象的textShadow属性?覆盖属性CSSStyleDeclaration.textShadow?

我试过如下:

var element = document.createElement('div'); 
Object.defineProperty(element.style, 'textShadow', { 
    get: function() { 
     console.warn("Getter called"); 
     return ""; 
    }, 
    set: function(value) { 
     console.log("Setter called"); 
    }, 
    configurable: true 
}); 

element.style.textShadow = "black 3px 3px 10px"; // Works as usual 

正如已经在最后一行说,该财产的替代并未真正发挥作用。我发现textShadow不是CSSStyleDeclaration元素的自己的属性,但它来自CSS2Properties接口。然而,我不知道如何获得CSS2Properties接口... ...我曾经在Firefox 7.0.1和Chrome 15上测试过。在Chrome中它不会工作,但是FF 8确实工作正常。

是否有更通用的方法来覆盖所有元素的所有textShadow属性?我可以迭代每个HTMLElement并覆盖textShadow属性,但我想要一个更方便的方法。

+2

这是Google Chrome中的一个错误。它在Firefox中正常工作。 – duri

+0

实际上,这在Firefox 9中可以正常工作(您应该始终指定您正在测试的浏览器):我收到警报并且元素的属性没有更改。 – Viruzzo

回答

0

我的问题是由Chrome浏览器中的错误引起的(请参阅帖子)。 在Firefox 8中,代码按预期工作。