首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript添加StyleSheet IE

Javascript添加StyleSheet IE
EN

Stack Overflow用户
提问于 2011-10-06 13:47:05
回答 3查看 2.1K关注 0票数 2

这是我的代码来源:

代码语言:javascript
复制
            nodeCss = $('<link rel="stylesheet" href="about:blank" type="text/css" 

media="all" />');
                nodeCss.attr('href',css_file);
                $("head").append(nodeCss);

我在IE上有两个问题:

  • 第一个是样式表第一次被忽略:我的页面允许我重新加载代码,当我这样做时,样式表不会被更多的忽略。在插入styleSheet所针对的新元素之前,样式表可能必须加载。
  • 第二个问题,所以第一个问题可以被“黑”(因为只在IE上),它是后台“url(.)”在我的动态样式表中,从来没有通过javascript在动态加载css文件中加载。相同的操作宽度-- HTML上的普通样式表--会产生背景ok。另外,它只是IE : Chrome和Firefox做的非常好。

对不起,我的语言,我会说一点英语,请理解。

非常感谢。

EN

回答 3

Stack Overflow用户

发布于 2011-10-06 13:59:13

尝试将document.createStylesheet用于IE浏览器。MSDN有一个关于如何使用此方法的文章

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

代码语言:javascript
复制
(document.createStyleSheet) ? document.createStyleSheet(css_file) : $('<link rel="stylesheet" type="text/css" href="' + css_file + '" />').appendTo('head')
票数 2
EN

Stack Overflow用户

发布于 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中的不同状态。

票数 1
EN

Stack Overflow用户

发布于 2013-05-22 17:59:40

用jQuery动态添加样式表给我带来了IE旧版本中的许多问题。下面是我最后使用的跨浏览器工作方式:

代码语言:javascript
复制
// 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);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7675184

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档