为什么.css('fontSize')会在Edge中产生不同的结果?

Shl*_*hlx 15 html javascript css microsoft-edge

考虑一下这段代码(也是一个小提琴):

document.getElementById("span").innerHTML += $('#input').css('fontSize');
Run Code Online (Sandbox Code Playgroud)
span input {
  font-size: inherit;
}

input {
  font-size: 15px;
}
Run Code Online (Sandbox Code Playgroud)
<span id="span" style="font-size: 30px;">
  <input id="input"/>
</span>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
Run Code Online (Sandbox Code Playgroud)

在Chrome和Firefox中,.css('fontSize')它将返回30px,在Edge和IE中它将是15px.为什么这样做?Edge中的DOM Explorer甚至显示15px的删除线,因此应该将继承的30px作为fontSize:

并且输入使用30px字体呈现,因此IE/Edge正在将其拾取以用于渲染目的.

T.J*_*der 9

更新:以下错误现已修复; FremyCompany表示,他/她是Edge团队的项目经理,该修复工具将于2017年初推出.


它看起来非常像IE和Edge bug.没有找到它,我报告了它.

下面是摘录的更新程序,看到的IE/EDGE是通过告诉jQuery的getComputedStyle还是currentStyle:

var input = $("#input");
console.log("jQuery: " + input.css('fontSize'));
if (window.getComputedStyle) {
  console.log("getComputedStyle: " + getComputedStyle(input[0]).fontSize);
}
if (input[0].currentStyle) {
  console.log("currentStyle: " + input[0].currentStyle.fontSize);
}
Run Code Online (Sandbox Code Playgroud)
span input {
  font-size: inherit;
}

input {
  font-size: 15px;
}
Run Code Online (Sandbox Code Playgroud)
<span id="span" style="font-size: 30px;">
  <input id="input"/>
  <span id="size"></span>
</span>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
Run Code Online (Sandbox Code Playgroud)

对我来说,IE11 15px从两者getComputedStyle和特定于Microsoft的currentStyle属性返回(它让人放心,他们至少会说同样的事情):

在此输入图像描述

因此,它不是一个jQuery错误,它是一个微软的错误,通过JavaScript报告大小(看起来像什么时候inherit是管理规则),即使它正确呈现它.

我试图找到一种方法使这个灰色区域,但无法想到任何东西.例如,根据规范,input内部a span是完全有效的.

  • 更具体地说,IE/Edge在报告大小时没有识别`inherit`指令.但渲染是正确的. (2认同)
  • 嗨,我是Edge团队的项目经理.我想报告此错误现已在我们的内部版本中修复.您可以预期此修复程序将在2017年初到达客户手中. (2认同)