我正在创建一个使用 Cufon 的网站,并且由于大量的 Javascript 而在页面重量方面特别重。因此,我尝试使用 head.js (http://headjs.com/)异步加载脚本,如下所示:
head.js("http://ajax.microsoft.com/ajax/jquery/jquery-1.4.2.min.js", function() {
head.js("/js/libs/cufon-yui.js", function() {
head.js("/js/shared/Stag_Bold_700.font.js" , function() {
Cufon.replace('h1', { fontFamily: 'Stag Bold' });
});
});
});
所以先下载jquery,依次下载后续的cufon lib文件和cufon字体,最后调用cufon替换H1。显然,这是一个精简的示例,更换次数较少,但仅在尝试更换 H1 时仍然不起作用。
问题是只有在 Internet Explorer (6/7/8) 中,文本没有被替换,但我可以看到 Cufon 肯定被调用了。我可以确定这一点,因为标签中添加了“cufon-active cufon-ready”类。当我使用 IE Developer 工具栏检查标记时,cufon/cufoncanvas 标签位于所选元素内,但由于缺少更好的词,它们是不可见的。
在 IE9 中,该脚本的行为与 Chrome 和 Firefox 类似。我已经尝试调整 Cufon 绘图引擎,并已更新到最新的 1.09i 版本以取得良好的效果。如果我将 Cufon 调用语句移动到文档就绪事件而不是异步加载,它可以工作,但我正在尝试优化页面加载,并且我的站点将使用许多 Cufon 字体以及许多其他 JS 插件。我也尝试过同时使用 labs.js 和 head.js 来异步加载适当的文件。