Я создаю сайт, который использует 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, последующие файлы lib cufon и шрифт 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 для асинхронной загрузки соответствующих файлов.