所以我有一个搜索cssRules的函数,这样我们就可以访问javascript中的样式对象了:
getCSSRule: function(selector) {
var i, j, sheet;
if (selector in this.cssCache) {
return this.cssCache[selector];
}
for (i in document.styleSheets) {
sheet = document.styleSheets[i];
for (j in sheet.cssRules) {
if (sheet.cssRules[j].selectorText === selector) {
this.cssCache[selector] = sheet.cssRules[j];
return sheet.cssRules[j];
}
}
}
}
在Chrome中,这可以正常使用,但在IE9 selectorText
中未定义,我也看到了UNKNOWN_RULE: 0
。
我在网上发现了here:
在IE浏览器中,当样式表中插入规则时,直到最新的IE8,它会在解析的输出中产生两个变化:a)将selectorText属性设置为大写字符串' UNKNOWN'如果它是无效的,b)从样式表中读回的表示cssText具有大写名称的属性(如果它们被识别),或者如果解析器不知道则从表示中丢弃它们。
但是,我并不了解问题所在或如何解决问题。 FYI堆栈是React,ES6和webpack,它还处理将scss导入到javascript模块中,这些javascript模块在运行时插入样式标记。