gpt4 book ai didi

javascript - 注入(inject)的链接样式表优先于 IE7+ 中的现有样式

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:37:28 27 4
gpt4 key购买 nike

在级联动态样式表时,IE 中似乎存在一个错误。有谁知道是否有解决方法?考虑一下:

<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>

注入(inject)的“test.css”包含#test{background:green} .

即使我们将 <link><style> 之前标记,IE7+ 将使用注入(inject)的样式表覆盖样式并应用绿色作为背景。

FF/Chrome 以正确的方式做到这一点,并让样式标签优先于注入(inject)的链接标签,因此背景保持红色。

最佳答案

我认为造成这种情况的原因是 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);

关于javascript - 注入(inject)的链接样式表优先于 IE7+ 中的现有样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3158370/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com