Javascript Jquery添加样式表IE

Javascript Jquery添加样式表IE,javascript,jquery,internet-explorer,Javascript,Jquery,Internet Explorer,这是我的代码源代码: nodeCss = $('<link rel="stylesheet" href="about:blank" type="text/css" media="all" />'); nodeCss.attr('href',css_file); $("head").append(nodeCss); nodeCss=$(''); nodeCss.attr('href',css_

这是我的代码源代码:

            nodeCss = $('<link rel="stylesheet" href="about:blank" type="text/css" 

media="all" />');
                nodeCss.attr('href',css_file);
                $("head").append(nodeCss);
nodeCss=$('');
nodeCss.attr('href',css_文件);
$(“head”)。追加(nodeCss);
我在IE上有两个问题:

  • 第一个是样式表第一次被忽略:我的页面允许我重新加载代码,当我这样做时,样式表不再被忽略。在插入以样式表为目标的新元素之前,可能必须加载样式表

  • 第二个问题是,第一个问题可能被“黑客”攻击(因为只有在IE上),这是我的动态样式表中的背景“url(…)”从未被javascript加载到动态加载css文件中。与HTML上的普通样式表相同的操作宽度会导致后台ok。还有一点,只有IE:Chrome和Firefox做得很好

对不起我的语言,我会说一点英语,可以理解


非常感谢。

尝试在IE浏览器中使用
document.createStylesheet
。MSDN对如何使用此方法有详细说明

潜在的跨浏览器解决方案:

(document.createStyleSheet) ? document.createStyleSheet(css_file) : $('<link rel="stylesheet" type="text/css" href="' + css_file + '" />').appendTo('head')
(document.createStyleSheet)?document.createStyleSheet(css_文件):$('').appendTo('head')

我不会直接回答你的问题,因为有更可靠、更简单的方法来达到预期的效果

如果要使用
元素动态加载附加到文档中的CSS文件,只需将其添加到标记中,并将其初始设置为
禁用的
属性:
。在JS/DOM中需要做的就是将其DOM属性
disabled
设置为
false
(布尔值)。在jQuery中,应该使用
prop()
方法来实现这一点


如果您的
css\u文件
变量可以根据某些其他代码采用更多不同的值,建议的解决方案是更改
元素的
。然后,您可以轻松地使用诸如
.state1#selector
.state2#selector
之类的选择器来表示HTML文档中的不同状态。

使用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);
}

更正:添加样式表后,在添加其他元素之前500毫秒内会有一个动画。样式表应该被加载。var fileref=document.createElement(“link”)fileref.setAttribute(“rel”,“stylesheet”)fileref.setAttribute(“type”,“text/css”)fileref.setAttribute(“href”,filename)document.getElementsByTagName(“head”)[0]。appendChild(fileref)工作得很好,但为什么我的代码不工作呢?没问题。jQuery使用$($)执行一项工作: