动态加载css样式表不适用于IE

pis*_*hio 72 html javascript css jquery internet-explorer

我动态加载一个css样式表(从jQuery的一点帮助),如下所示:

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

这适用于Firefox和谷歌浏览器,但不适用于IE.

有帮助吗?谢谢

Rex*_*x M 118

一旦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'); 
}
Run Code Online (Sandbox Code Playgroud)

  • 我添加了一个代码示例,说明了我如何实现它. (10认同)
  • 更新09/2013:不再支持createStyleSheet方法.有关更多信息,请访问:http://msdn.microsoft.com/en-us/library/ie/ms531194%28v=vs.85%29.aspx (3认同)

eke*_*ner 38

你需要设置最后的href attr,并且只有在链接元素附加到头部之后:

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

  • 这是一个重要的Internet Explorer怪癖(即使是最近的IE 8),对我正在开发的项目绝对至关重要.谢谢你在这里注意到它.人们何时会停止使用IE浏览器? (9认同)
  • 我比仅使用IE的'document.createStyleSheet'方法更喜欢这个. (2认同)