2011-11-22 149 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中,代碼按預期工作。