动态删除样式链接后,在IE中刷新CSS样式

时间:2010-04-28 15:21:49

标签: javascript css internet-explorer

我在IE7中遇到了动态样式操作的问题(IE8很好)。使用javascript我需要添加和删除< link /> 节点,带有css文件的定义。

添加和删除节点作为<的子节点head /> 在Firefox下运行正常。不幸的是,在IE中删除它之后,虽然正确删除了标记,但页面样式不会刷新。

在下面的示例中,附加并删除了一个简单的css(使背景为绿色)。在FF中删除后,背景变为默认值,但在IE中保持绿色。

  

的index.html

<html>
<head>
</head>
<script language="javascript" type="text/javascript">

var node;

function append(){
    var headID = document.getElementsByTagName("head")[0];       
    node = document.createElement('link');
    node.type = 'text/css';
    node.rel = 'stylesheet';
    node.href = "s.css";
    node.media = 'screen';
    headID.appendChild(node);
}

function remove(){  
    var headID = document.getElementsByTagName("head")[0];      
    headID.removeChild(node);
}
</script>
<body>

<div onClick="append();">
add
</div>

<div onClick="remove();">
remove
</div>

</body>
</html>

样式表:

s.css
body { background-color:#00CC33  }

以下是实例:http://rlab.pl/dynamic-style/

有没有办法让它发挥作用?

1 个答案:

答案 0 :(得分:1)

Rybz,我个人会设置一个“初始”样式表重置回来(也因为它有助于将浏览器重置为“我的”所需初始设置,而不是浏览器默认设置)以及从DOM中删除样式表我会插入一个重置为。我不知道这是否适用于你想要做的事情,但它在类似的情况下对我有用,如果我没记错的话,我遇到了和你一样的问题,并修复了它。