Javascript 在IE7+的动态样式表中添加@import语句;

Javascript 在IE7+的动态样式表中添加@import语句;,javascript,css,internet-explorer,dynamic-css,Javascript,Css,Internet Explorer,Dynamic Css,我在为IE添加带有@import语句的动态样式元素时遇到问题。请尝试以下操作: var string = '@import url(test.css)'; var style = document.createElement('style'); if (style.styleSheet) { // IE style.styleSheet.cssText = string; } else { var cssText = document.createTextNode(string

我在为IE添加带有@import语句的动态样式元素时遇到问题。请尝试以下操作:

var string = '@import url(test.css)';
var style = document.createElement('style');

if (style.styleSheet) { // IE
    style.styleSheet.cssText = string;
} else {
    var cssText = document.createTextNode(string);
    style.appendChild(cssText);
}

document.getElementsByTagName('head')[0].appendChild(style);

这适用于FF/Chrome,但不适用于IE。它似乎可以识别
style.styleSheets.imports
,但不会应用导入的样式表。这是一个bug还是一个限制?

许多旧浏览器无法处理不同形式的@import指令,这可以用来隐藏css。查看详细信息

在样式表中,
@import
指令必须放在第一位,否则它们将被忽略。但是IE不会忽略错误的
@import
指令


编辑:请参阅IE中注入样式表的说明。

为什么不使用
@digitalFresh:因为在这种情况下,我无法控制插入的CSS字符串。您何时执行javascript?因为在尝试javascript之前,DOM可能没有完全加载。最好的办法是将其作为页面上正文内的最后一件事来尝试(如果还没有)。这不是这里的问题,在HTML中添加样式标记时效果很好,通过DOM注入时会出现问题。