<!DOCTYPE html>
<html>
<head>
<title>Test IE8 pre calc</title>
</head>
<body>
<div id='inserthere'></div>
<p id="dump"></p>
<p id="dump2"></p>
</body>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>
$(function () {
var t = "<table style='white-space: pre;'><tr><td>abc def\nghi</td></tr></table>";
$("#inserthere").append($(t));
$("#dump").text($("tr").height());
window.setTimeout(function () {
$("#dump2").text($("tr").height());
}, 0);
});
</script>
</html>
在上面的代码中,我在运行时向 DOM 插入了一个表。该表使用“pre”空白规则进行格式化。
如果height()
在与插入相同的调用中计算包含多行 td 的行,则 IE8 错误地报告单行(21 像素)。如果异步进行相同的调用,IE8 会正确报告两行(40 像素)。
IE9/10/Safari/Chrome/Firefox 都可以。