javascript - 为什么这个 javascript 函数在 Firefox 上这么慢?

标签 javascript performance firefox

此函数改编自网站:http://eriwen.com/javascript/measure-ems-for-layout/

function getEmSize(el) {
    var tempDiv = document.createElement("div");
    tempDiv.style.height = "1em";
    el.appendChild(tempDiv);
    var emSize = tempDiv.offsetHeight;
    el.removeChild(tempDiv);
    return emSize;
}

我在 window.resize 上将此函数作为另一个函数的一部分运行,它在 Firefox 3.6 上导致了当前 Safari 或 Chrome 上不存在的性能问题。 Firefox 的分析器说我在这个功能上花费的时间最多,我很好奇为什么会这样。

有没有办法在不完成所有这些工作的情况下在 javascript 中获取 em 大小?我想在调整大小时重新计算大小,以防用户更改它。

最佳答案

看起来这个功能可能只是

function getEmSize(el) {
    return Number(getComputedStyle(el, "").fontSize.match(/(\d+)px/)[1]);
}

换句话说,您可以只获取元素的计算字体大小,而不是创建一个 div 并调整它的大小。

关于javascript - 为什么这个 javascript 函数在 Firefox 上这么慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4571813/

相关文章:

javascript - 为什么我的 Jquery 轮播不会停在最后一张图片上?

javascript - Angular 2 - 升级到 rc4 会引发脚本错误

ruby - 哪个 Ruby Web 服务器?

html - Firefox 旋转变换的绝对定位问题

javascript - D3 试图将 SVG 的属性设置为 NaN,我不明白为什么

javascript - 在 CSS 中使用 Javascript 变量来控制对象的可见性

c++ - 如何改进基于sse的矩阵乘法

c++ - RTTI 有多贵?

javascript - 如何启用本地 JavaScript 来读取/写入我的 PC 上的文件?

html - 容器不展开