我在最新版本的铬中遇到了这个问题。在创建了第一个元素之后,使用一个通过@字体面板嵌入的字体系列,我被传递了错误的offsetXyz值。到执行脚本时,window.onload钩子已经启动,字体也就已经加载了。
这就是脚本的样子(示意性地说):
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-检查值,然后呈现解决方案。我不喜欢做那种肮脏的事。
有人有什么建议吗?只有在没有指定src: local(" ... ")时,问题才会被下载-字体特定。
发布于 2011-06-19 11:43:39
你自己已经给出了答案。设置src: local(),这是不会发生的--一般来说,当您使用@font-face时,请坚持使用防弹语法,因为它是用来克服浏览器问题的,比如您在这里碰到的浏览器问题。
发布于 2012-01-22 07:28:37
我知道已经快一年了,但我也遇到了这个问题,花了半天时间才发现原因。您可以等待整个页面加载,而不是使用超时。src: local()对我没有任何影响。所以你可以使用:
<body onload="finished()">或者在jQuery中:
$(window).load(
function() {
// this only will execute when the entire page is loaded.
}
);https://stackoverflow.com/questions/5998137
复制相似问题