Javascript 在IE7+的动态样式表中添加@import语句;
我在为IE添加带有@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
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注入时会出现问题。