Что является ЛУЧШИМ ПУТЕМ для загрузки 100 + шрифтов на веб-страницу для просмотра. У меня небольшая компания, и мне нужен онлайн-пользователь, чтобы иметь возможность увидеть ИХ ТАМОЖЕННЫЙ ТЕКСТ в шрифте THEIR CHOICE. У большинства из них не будут установлены эти шрифты. Большое спасибо. Я знаю о шрифте @ font-face и local, но я искал более быстрый и короткий путь. Может быть, используя переменную, прошедшую из значения окна выбора?Мне нужно загрузить 100 шрифтов на мою веб-страницу для просмотра
ответ
Не загружайте их все одновременно. Используйте XmlHttpRequests для загрузки шрифтов по требованию.
Если вы АБСОЛЮТНО ДОЛЖНЫ загрузить все шрифты, а затем base64 закодировать их в CSS файл fonts.css
затем служить CSS файлы архивированными ...
А если серьезно, вы не должны делать последний.
Создание изображений на сервере. Тогда клиентский ПК может пережить вашу страницу. Или нет.
Почему вы не используете разбивку на страницы и показываете только 10 одновременно?
Вот частичное решение, я не тестировал шрифты. Идея состоит в том, что есть две страницы, например, страница всплеска и реальная страница. На странице всплеска вы загружаете все свои статические изображения, шрифты и т. Д., Создавая поддельные теги IMG на странице. Затем файлы находятся в кеше. Когда вы просматриваете свои файлы, загружаете их вниз, пауза между ними, чтобы свести к минимуму вероятность блокировки пользовательского интерфейса. Это стратегия, которую я планировал использовать для файлов javascript, но должен работать с другим статическим контентом.
//Load but doesn't execute. Gets the file into the local cache.
var preload;
if (/*@[email protected]*/false)
{
preload = function (file)
{
new Image().src = file;
};
}
else
{
preload = function (file)
{
//it really is an object
var obj = document.createElement('object'),
body = document.body;
obj.width = 0;
obj.height = 0;
obj.data = file;
body.appendChild(obj);
};
}
function preloadAll(urls)
{
processArray(urls, preload
//omit optional callback
);
}
function processArray(items, process, callback)
{
var todo = items.concat(); //create a clone of the original
setTimeout(function()
{
process(todo.shift());
if (todo.length > 0)
{
setTimeout(arguments.callee, 100);
} else
{
if (typeof callback === 'function')
{
callback(items);
}
}
}, 100);
}