【发布时间】:2018-07-01 06:10:04
【问题描述】:
跨度颜色不应该是绿色,它在 Chrome 中是红色的。
HTML 规范说它应该是绿色的,在 Firefox 中它是绿色的。
HTML 规范使用 fetch 来获取元素引用的资源(请参阅 this 并且 fetch 始终是异步操作。因此在新样式表加载之前获取计算的样式,因此颜色应为绿色。
var div = document.createElement("div");
document.body.appendChild(div);
var link = document.createElement("link");
link.href = "data:text/css,div { color: red }";
link.rel = "stylesheet";
var div = document.createElement("div");
document.body.appendChild(div);
var link = document.createElement("link");
link.href = "data:text/css,div { color: red }";
link.rel = "stylesheet";
document.head.appendChild(link);
document.querySelector("span").style.color = getComputedStyle(div).color;
link.remove();
div.remove();
div { color: green }
<span>This should be green</span>
【问题讨论】:
-
在我看来是绿色的?火狐 57
-
为什么有人对此投反对票并投票赞成关闭,这是一个真正的问题。
-
我认为它应该是红色的,因为此时您的呼叫
getComputedStyle已添加动态链接样式。所以在这里我认为 Chrome 做得正确。 -
@SurajJain 这是一个反对票。不要这么个人化。
-
“为什么不采取人身攻击” - 因为这绝不是人身攻击。为了公平对待投票者,您没有解释为什么您期望得到您期望的结果。您刚刚转储了一段 javascript,并希望我们通过它来挑选。
标签: javascript html css browser-bugs