gpt4 book ai didi

javascript - IE10 计算宽度的问题

转载 作者:行者123 更新时间:2023-11-30 06:29:38 24 4
gpt4 key购买 nike

我在 IE10 中使用表格 View 时遇到问题。出于某种原因,IE10 会在单元格绘制到屏幕上之前尝试测量单元格的宽度,而其他浏览器则不会。在 IE10 与其他版本/浏览器中放置断点时,可以清楚地看到差异。

代码非常复杂,但我设法创建了一个重现问题的片段:

var cells = 40;
var rows = 1000;

console.clear();

function measure(obj) {
obj = $(obj);
console.log(obj.getWidth());
}

var randomNumber = function (scale, offset) {
scale = scale || 10;
offset = offset || 50;
return (Math.floor(Math.random() * 11) * scale) + offset;
};

var output = "<table><thead><tr>";

for (var i = 0; i < cells; i++) {
output += "<th width='" + randomNumber() + "'></th>";
}
output += "</tr></thead><tbody>";
for (var j = 0; j < rows; j++) {
output += "<tr>";
for (var i = 0; i < cells; i++) {
output += "<td></td>";
}
output += "</tr>";
}

output += "</tbody></table>";

// Insert into DOM.
$(document).body.insert(output);

// Measure the elements.
$$('th').each(measure);

Fiddle

现在,根据列和行的数量,IE10 将返回正确的宽度,或者当更复杂时,它将全部返回 0(您可以调整数字来测试这一点)。

我试过在返回 0 时用循环延迟 getWidth 函数,但所做的只是锁定浏览器并最终也返回 0。有什么想法可以让 IE10 返回正确的宽度吗?

最佳答案

这显然是 IE10 中的一个缺陷。通过这样做,我能够显示您的测量结果:

setTimeout(function () {
$$('th').each(measure);
}, 1000);

看起来好像 IE10 正在对元素进行某种延迟渲染,并且在布局新元素之前正在执行测量函数。

显然这不是一个理想的解决方案,但它可能会给您一些想法。

关于javascript - IE10 计算宽度的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18587988/

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