Я создаю сайт, который использует 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 и шрифт cufon загружаются последовательно, а затем, наконец, вызывается Cufon для замены файла H1. Очевидно, что это урезанный пример с меньшим количеством замен, но это все равно не работает, если просто заменить H1.
Проблема в том, что ТОЛЬКО в Internet Explorer (6/7/8) текст не заменяется, но я вижу, что Cufon точно называется. Я могу убедиться в этом, потому что к тегу добавлен класс «cufon-active cufon-ready». Когда я проверяю разметку с помощью панели инструментов разработчика IE, теги cufon/cufoncanvas находятся внутри выбранных элементов, но, если не сказать лучше, невидимы.
В IE9 сценарий ведет себя так же, как и в Chrome и Firefox. Я попытался настроить механизм рисования Cufon и на всякий случай обновил его до последней версии 1.09i. Если я перенесу операторы вызова Cufon в событие готовности документа вместо асинхронной загрузки, это сработает, но я пытаюсь оптимизировать загрузку страницы, и мой сайт будет использовать ряд шрифтов Cufon, а также многие другие подключаемые модули JS. Я также пытался использовать как labs.js, так и head.js для асинхронной загрузки соответствующих файлов.