我在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/
有没有办法让它发挥作用?
答案 0 :(得分:1)
Rybz,我个人会设置一个“初始”样式表重置回来(也因为它有助于将浏览器重置为“我的”所需初始设置,而不是浏览器默认设置)以及从DOM中删除样式表我会插入一个重置为。我不知道这是否适用于你想要做的事情,但它在类似的情况下对我有用,如果我没记错的话,我遇到了和你一样的问题,并修复了它。