我在最新版本的Chromium中遇到了此问题。在使用通过@ font-face嵌入的字体系列创建第一个元素之后,我将获得错误的offsetXyz值。在执行脚本时,将已经触发window.onload钩子(Hook),因此将已经加载了字体。
这是脚本的样子(示意上):
var e = document.createElement("span");
e["innerText" in e?"innerText":"textContent"] = "fooBar";
e.style.fontFamily = "fontFaceEmbeddedFontFamily";
document.body.appendChild(e);
alert(e.offsetWidth); // Returns two different values
setTimeout(function() {
alert(e.offsetWidth); // The latter being correct
}, 1000);
该值“无提示”更新。似乎没有办法等待它更正值,而只是setInterval-check值,然后呈现解决方案。我不喜欢那样做肮脏的东西。
有人对如何进行有任何建议吗?仅当未指定
src: local(" ... ")
时才会发生,因此该问题是特定于下载字体的。 最佳答案
您已经自己给出了答案。设置src: local()
并不会发生这种情况-通常,当您使用@font-face
时,请坚持使用bulletproof syntax,因为这样做是为了克服浏览器问题,例如您在此处遇到的问题。