这是我的代码来源:
nodeCss = $('<link rel="stylesheet" href="about:blank" type="text/css"
media="all" />');
nodeCss.attr('href',css_file);
$("head").append(nodeCss);我在IE上有两个问题:
对不起,我的语言,我会说一点英语,请理解。
非常感谢。
发布于 2011-10-06 13:59:13
尝试将document.createStylesheet用于IE浏览器。MSDN有一个关于如何使用此方法的文章。
一个潜在的跨浏览器解决方案:
(document.createStyleSheet) ? document.createStyleSheet(css_file) : $('<link rel="stylesheet" type="text/css" href="' + css_file + '" />').appendTo('head')发布于 2011-10-06 14:02:28
我不会直接回答你的问题,因为有更可靠和更简单的方法如何达到预期的效果。
如果希望使用<link>元素动态加载附加到文档中的CSS文件,只需将其添加到标记中,并将其设置为初始的disabled属性:<link rel=stylesheet href=style.css disabled>。在JS/DOM中所要做的就是将其DOM属性disabled设置为false (布尔值)。在jQuery中,应该使用prop()方法来做到这一点。
如果您的css_file变量可以根据其他代码采取更多不同的值,建议的解决方案是更改class of <html>元素。然后,您可以很容易地使用选择器(如.state1 #selector和.state2 #selector )来表示HTML中的不同状态。
发布于 2013-05-22 17:59:40
用jQuery动态添加样式表给我带来了IE旧版本中的许多问题。下面是我最后使用的跨浏览器工作方式:
// Prevent Firefox security error
document.getElementsByTagName('head')[0].appendChild(document.createElement('style'));
// Get last style sheet so that the rules we add will take precedence
var sheet = document.styleSheets[document.styleSheets.length-1];
// Internet Explorer method
if(sheet.addRule)
{
// FORMAT:
// sheet.addRule('selector','rule: xxx');
// sheet.addRule('selector','rule: xxx');
sheet.addRule('a:hover','color: yellow');
sheet.addRule('a:hover','text-decoration: none');
}
// All other browsers
if(sheet.insertRule)
{
// FORMAT: sheet.insertRule('selector { rule: xxx; rule: xxx; rule: xxx; }');
sheet.insertRule('a:hover { color: yellow; text-decoration: none; }', sheet.cssRules.length);
}https://stackoverflow.com/questions/7675184
复制相似问题