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器和瞧,他们应该在那里。