我目前正在为广泛使用自定义字体的客户构建公司网站.
在jQuerys DOM-ready上我正在进行位置计算,以确定应根据动态内容放置一些具有动态宽度和高度的弹出菜单.
这些计算失败,因为在应用font-face之前触发了DOM-ready,因此宽度和高度不正确.
现在(对于原型)我在DOM准备好500ms后进行计算以缓解这个问题,但由于显而易见的原因,这不能投入生产.
在最新的Firefox和Chrome中已经出现了这个问题.IE 8似乎没有问题,但是随后DOM-ready起火相当晚,所以延迟是内置的我猜:)
等待加载事件不是一个选项,所以我的问题是:
是否有可靠的跨浏览器方式来检测何时应用了font-face?
我正在尝试将事件处理程序附加到链接标记的加载事件,以在加载样式表后执行某些代码.
new_element = document.createElement('link');
new_element.type = 'text/css';
new_element.rel = 'stylesheet';
new_element.href = 'http://domain.tld/file.css';
new_element.addEventListener('load', function() { alert('foo'); }, false);
document.getElementsByTagName('head')[0].appendChild(new_element)
Run Code Online (Sandbox Code Playgroud)
我也试过onreadystatechange
new_element.onreadystatechange = function() { alert('foo'); }
Run Code Online (Sandbox Code Playgroud)
不幸的是,这两种方法都没有导致触发警报.此外,在使用addEventListener注册'load'事件的处理程序后,new_element.onload为null.这是正常的吗?
谢谢,安德鲁
ps:我可能不会使用任何框架来解决这个问题