Javascript IE未在div上显示背景色
问题似乎是IE9-edge只阻止了我的javascript设置的一部分。虽然我可以删除安全设置以显示所需的效果,但我不能要求用户也这样做。我确信这里缺少了一些东西,因为代码的其余部分显示正确Javascript IE未在div上显示背景色,javascript,jquery,html,css,internet-explorer,Javascript,Jquery,Html,Css,Internet Explorer,问题似乎是IE9-edge只阻止了我的javascript设置的一部分。虽然我可以删除安全设置以显示所需的效果,但我不能要求用户也这样做。我确信这里缺少了一些东西,因为代码的其余部分显示正确 $.each(data.results.audio, function(key, val) { var replace = val.mp3Url.replace('&', '&'); if (val.imgUrl) { status = "style='ba
$.each(data.results.audio, function(key, val) {
var replace = val.mp3Url.replace('&', '&');
if (val.imgUrl) {
status = "style='background:";
switch (val.roadCondition) {
case "1":
status += "#4CAF50'"; // green
break;
case "2":
status += "#FFEB3B'"; // yellow
break;
case "3":
status += "#D32F2F'"; // red
break
case "4":
status += "black'"; // black
break;
default:
status += "white'"; // white
}
}
var items2 = "<div class='bt_icon z-depth-5 hvr-round-corners'" + status + "><p class='shine waves-effect waves-green hvr-round-corners'><img id='" + key + "' class='majors ' src='" + val.imgUrl + "' alt='" + val.name + "' title='" + val.name + "' data-audio='" + replace + "' /></p></div>";
$("#button_icons").append(items2);
if (first && !isDone) {
isDone = true;
var audio = document.querySelector("audio");
audio.src = replace;
audio.load();
}
items.push(items2);
});
注意:背景色具有相同的效果
除了状态变量get set之外,其余代码都可以正常工作。Chrome、Firefox和Safari都能正确显示。但在IE上,上面的状态代码似乎从未被注入。它不会出现在开发工具中的dom中。要显示所有代码,唯一的方法是将安全设置放到介质中,然后重新加载页面。有任何解释/修复吗?结果表明答案在IE兼容性的meta标签中。当IE运行不安全的intranet内容时,它默认进入兼容模式。这就是我所拥有的:
<meta http-equiv="X-UA-Compatible" content="IE=EDGE; IE=9; IE=8"/>
我将其改为:
<meta http-equiv="X-UA-Compatible" content="IE=EDGE"/>
这里有一个很好的解释,解释为什么这会导致我的问题:
IE可能需要在属性值周围加上双引号,以便应用它们。输出被解释为双引号。至少就我所知,在chrome、firefox和Safari的DOM中。好主意。不应该内联的类和样式。。。彼此接触,中间没有空隙。这当然足以将IE淘汰。与其将字符串附加在一起,不如使用jQuery的函数:jQuery.addClassbt_icon.cssbackground,status.append…-这将有助于避免混合引号,处理时髦的字符等。间距不重要,但是固定的。我将使用jQuery函数重写items2,看看这是否能修复它。请继续关注。这已经让我好几次了——让我发疯。