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

mac*_*ael 4 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;
}
Run Code Online (Sandbox Code Playgroud)

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

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

Dav*_*ron 11

好像功能可能只是

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

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