IE在级联动态样式表时似乎有一个bug。有没有人知道有没有解决办法?请考虑以下内容:
<head>
<style>#test{background:red;}</style>
</head>
<body>
<div id="test">test</div>
<script>
var link = document.createElement('link');
var style = document.getElementsByTagName('style')[0];
link.rel = 'stylesheet';
link.href = 'test.css';
style.parentNode.insertBefore(link, style);
</script>
</body>注入的'test.css‘包含#test{background:green}。
即使我们将<link>放在<style>标记之前,IE7+也会用注入的样式表覆盖样式,并应用绿色作为背景。
FF/Chrome这样做是正确的,让style标签优先于插入的link标签,这样背景就会保持红色。
发布于 2010-07-02 22:57:03
我认为原因在于IE定义insertBefore的方式。仅在IE中,您只能向insertBefore方法传递一个参数,它的行为将与appendChild相同。我认为他们所做的就是插入然后移动。如果它们在插入点渲染,那么它将被正确渲染。
我能想到的唯一变通方法是(这不是很理想):
var link = document.createElement('link');
var style = document.getElementsByTagName('style')[0];
var newstyle = style.cloneNode(true);
link.rel = 'stylesheet';
link.href = 'test.css';
style.parentNode.insertBefore(link, style);
style.replaceNode(newstyle);https://stackoverflow.com/questions/3158370
复制相似问题