gpt4 book ai didi

css - IE8 不应用该样式,即使它的开发人员工具显示它

转载 作者:太空宇宙 更新时间:2023-11-03 18:22:53 25 4
gpt4 key购买 nike

我想知道是否有人遇到过这个问题,他们是如何解决的。IE 没有为我在运行时添加的类应用样式 (jQuery)。奇怪的是,开发人员工具显示应该应用它。见下图。

“fa-bars”元素有一个带有“blue”类的父元素。在本例中,我在 $(document).ready() 中添加了“blue”类。如果我在 HTML 标记上添加“蓝色”类(而不是在运行时添加),它会正确应用样式。但这不是我想做的。

我只在 IE 上遇到这个问题(我使用 IE8),但 Chrome 和 FF 都按照我的预期(正确)呈现页面。关于如何解决这个问题的任何想法?

似乎只有在呈现伪内容(例如 FontAwesome)时才会出现问题。如果我用纯文本替换该元素,它就可以工作。

enter image description here

已添加:

这是我的完整 HTML,其中包含指向 FontAwesome 和 jQuery 的 CDN 的链接:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width" />
<title>Test</title>
<link href="http://netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css" rel="stylesheet">
<script src="http://code.jquery.com/jquery-1.10.2.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function () {
$('.nav-toc').addClass('blue');
});
</script>
<style type="text/css">
.fa {font-size: 1.5em;}
.nav-toc {color: red;}
.blue {color: blue;}
</style>
</head>

<body class="pson-green">
<div id="master-body">
<!-- Top banner (Menu) -->
<div id="master-header">
<div class="content-wrapper">
<div id="nav-grp-toc" class="nav-container">
<div class="nav-btn nav-toc" title="Contents Menu"><i class="fa fa-bars"></i></div>
</div><div id="nav-grp-help" class="nav-container">
<div class="nav-btn nav-help" title="Help"><i class="fa fa-question"></i></div>
</div><div id="nav-grp-counters" class="nav-container">
<div id="page-counter" class="nav-page counter-panel">
<div id="current-page" class="current-count" title="Current page number"></div>
<div id="total-pages" class="max-count" title="Total number of pages"></div>
</div>
<div id="question-counter" class="nav-quiz counter-panel">
<div id="current-question" class="current-count" class="Current question number"></div>
<div id="total-questions" class="max-count" title="Total number of questions"></div>
</div>
</div><div id="nav-grp-steppers" class="nav-container">
<div class="nav-btn nav-page nav-prev" title="Back"><i class="fa fa-chevron-left"></i></div>
<div class="nav-btn nav-page nav-next" title="Next"><i class="fa fa-chevron-right"></i></div>
</div><div id="nav-grp-exit" class="nav-container">
<div class="nav-btn nav-page nav-exit" title="Exit Course"><i class="fa fa-sign-out"></i></div>
</div>
</div>
<div id="dimmer-for-header" class="dimmer"></div>
</div>
</div>
</body>
</html>

最佳答案

我想我可能已经找到了答案。从我对类似帖子的搜索看来,问题出在 IE 对伪元素的处理上。不幸的是,我对这些帖子的许多答案/建议似乎对我的情况不起作用,除了这个 SO item .基本上,它建议强制 IE 重新绘制伪元素,方法是临时向 DOM 添加一个删除所有伪内容的样式标签,然后立即删除该样式标签。当结合基于此 SO item 的 IE8 检查时,它似乎有效。 .我将此添加到我的脚本中:

var ie = (function () {
var undef,
v = 3,
div = document.createElement('div'),
all = div.getElementsByTagName('i');
while (
div.innerHTML = '<!--[if gt IE ' + (++v) + ']><i></i><![endif]-->',
all[0]
);
return v > 4 ? v : undef;
} ());

function redrawPseudos() {
var head = document.getElementsByTagName('head')[0],
style = document.createElement('style');
style.type = 'text/css';
style.styleSheet.cssText = ':before,:after{content:none !important;}';
head.appendChild(style);
setTimeout(function () {
head.removeChild(style);
}, 0);
}

所以当我必须添加/删除一个类时,我希望它会影响伪元素的样式,我必须这样做:

 $('.class1').addClass('newclass');   
if (ie === 8) {
redrawPseudos();
}

这可能是一种昂贵的方式。但是我只有不到十几个伪元素。

已添加:

您可以通过将选择器传递给 redrawPseudos() 并将其包含到样式中来改进这一点。这会将重绘限制为由您的选择器标识的元素。

function redrawPseudos(sel) {
...
style.styleSheet.cssText = sel + ':before, ' + sel + ':after, ' + sel + ' *:before, ' + sel + ' *:after ' + '{content:none !important;}';
...
}

关于css - IE8 不应用该样式,即使它的开发人员工具显示它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21470482/

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