【发布时间】:2020-03-04 06:08:19
【问题描述】:
我目前正在为广泛使用自定义字体的客户构建公司网站。
在 jQuerys DOM-ready 上,我正在进行布局计算,以根据动态内容确定一些具有动态宽度和高度的弹出菜单应放置在何处。
这些计算失败,因为 DOM-ready 在应用 font-face 之前被触发,因此宽度和高度不正确。
现在(对于原型)我在 DOM 就绪后 500 毫秒进行计算以缓解这个问题,但由于明显的原因,这不能投入生产。
该问题已在最新的 Firefox 和 chrome 中观察到。 IE 8 似乎没有问题,但是 DOM-ready 触发相当晚,所以我猜延迟是内置的:)
等待加载事件不是一个选项,所以我的问题是:
是否有可靠的跨浏览器方法来检测何时应用了字体?
【问题讨论】:
-
好吧,我不确定这是否会有所帮助,但不要在 document.ready 上做你的魔法,而是尝试在 window.load 上做。它会在加载图像等时稍后触发,但可能会有一些字体闪烁,这似乎是不可取的。
-
正如我已经说过的,等待加载事件不是一种选择。
-
好的,那你用什么来应用字体呢?有一些库可以做这种事情,这些事情可能已经在正确的地方触发了适当的事件。我记得很少有 Cufon、FLIR 和 SIFR 专门用于处理字体替换,如果他们没有设法解决上述问题,我会感到惊讶!
-
自定义字体通过 css 应用,使用 @font-face 进行定义(fontspring 语法)和 font-family 声明。 Javascript 不是其中的一部分。
-
测试字体字符串宽度以确定字体是否可见的 JavaScript 解决方案:stackoverflow.com/questions/12312323/…
标签: javascript jquery font-face domready