dynamic加载CSS样式表在IE上不起作用

我dynamic加载一个CSS样式表(从jQuery的一点帮助),像这样:

var head = document.getElementsByTagName('head')[0]; $(document.createElement('link')) .attr({ type: 'text/css', href: '../../mz/mz.css', rel: 'stylesheet' }) .appendTo(head); 

这在Firefox和谷歌浏览器中工作正常,但不在 IE中。

任何帮助? 谢谢

一旦IE浏览器处理了页面加载的所有样式,添加另一个样式表的唯一可靠方法是使用document.createStyleSheet(url)

有关更多详细信息,请参阅createStyleSheet上的MSDN文章 。

 url = 'style.css'; if (document.createStyleSheet) { document.createStyleSheet(url); } else { $('<link rel="stylesheet" type="text/css" href="' + url + '" />').appendTo('head'); } 

只有在链接元素被添加到头后,才需要设置最后的href属性:

 $('<link>') .appendTo('head') .attr({type : 'text/css', rel : 'stylesheet'}) .attr('href', '/css/your_css_file.css'); 

这也似乎在IE中工作:

 var link = document.createElement('link');
 link.rel ='stylesheet';
 link.type ='text / css';
 link.href ='/includes/style.css';
 document.getElementsByTagName( '头')[0] .appendChild(联系);

这也可能与它有关 – 从微软支持文章 :

在Microsoft Internet Explorer版本中加载页面时,网页上的样式丢失或看起来不正确

发生此问题是因为在Internet Explorer中满足以下条件:

  • 没有应用前31个样式标签之后的所有样式标签。

  • 前4095条规则之后的所有样式规则都不适用。

  • 在使用@import规则连续导入导入其他样式表的外部样式表的页面上,会忽略深度超过三级的样式表。

看起来

 $('<link rel="stylesheet" type="text/css" href="' + url + '" />').appendTo('head'); 

也可以在IE浏览器中使用,只要url是包含协议的完全限定的URI即可

打开ie8而不打开debugging器。 当你到达dynamic样式表之后…打开debugging器和瞧,他们应该在那里。