2009-07-02
_ [Mozilla]
昨日の@import削除が効かない原因判明。
@importはDOM的にはCSSImportRuleインターフェースで、子CSSStyleSheetを抱え込んでる。
http://www.w3.org/TR/2000/REC-DOM-Level-2-Style-20001113/css.html#CSS-CSSImportRule
fxでは@importを削除しても、子スタイルシートのルールが残ってしまうため、こっちも手動で削除する必要がある。
もちろん子スタイルシートも@importである可能性があるため、再帰的に処理する。
deleteCSSRule: function(target){
while(target.cssRules.length){
if(target.cssRules[0].styleSheet){
this.deleteCSSRule(target.cssRules[0].styleSheet);
}
target.deleteRule(0);
}
}