2016-02-13 3 views
0

У меня есть веб-сайт, где весь текст в нем использует пользовательский шрифт. Проблема заключается в том, что каждый браузер ведет себя по-другому с пользовательским шрифтом, таким как Flash of Invisible Text.Flash of Invisible Text

В принципе, то, что я хочу сделать, это изначально в документе. Теперь, чтобы установить шрифт в Arial, а затем, как только шрифт установлен, я установил весь текст в свой собственный шрифт.

Однако, вот результат, который я получаю? Каждая страница становится arial тогда мой пользовательский шрифт. Я вижу, что проблескивание шрифта раздражает?

Теперь, мой вопрос: - Как создать событие jquery, которое вызывается только один раз через весь мой сайт? спасибо,

+0

* Первоначально в документе. Чтобы установить шрифт в Arial, а затем, как только шрифт установлен, я установил весь текст в свой собственный шрифт. * -> * Каждая страница становится arial, а затем мой пользовательский шрифт. * Чего вы ожидали? –

+0

Как я понимаю, браузеры намеренно отправились _away_ из этой функции, предпочитая не выводить текст вообще на срок до 3 секунд, пока пользовательский шрифт загружается. Это было во избежание проблемы с Flash of Unstyled Text (FOUT), но также представил новый (ошибка или функция по вашему усмотрению: Flash of Invisible Text (FOIT)). Похоже, ваш код делает именно то, что вы хотите, чтобы он делал : визуализировать Arial, а затем визуализировать собственный шрифт. Обратите внимание на некоторые JS о том, как «проверить», что ваш шрифт загружен: https://www.filamentgroup.com/lab/font-events.html – rpearce

ответ

0

Спасибо за помощь .. Теперь она работает отлично:

Я использовал следующие:

1- Во-первых, в CSS Я использую Arial

2- Используя этот JS: // я поставил ниже внутри JQuery pagebeforeshow события

WebFontConfig = { google: { families: [ "customfont1","customfont2"] } , active : function() { 
 
\t \t //alert("this is the default font"); 
 
    \t 
 
    \t \t // All Body 
 
    \t \t for (i = 0; i < document.all.length; i++) { 
 
\t \t \t document.all[i].style.fontFamily = "customfont1"; 
 
\t \t } 
 
\t \t // Titles 
 
\t \t var x = document.getElementsByClassName("title"); 
 
\t \t var i; 
 
\t \t for (i = 0; i < x.length; i++) { 
 
    \t \t x[i].style.fontFamily = "customfont2"; 
 
    \t \t  \t \t } 
 
    \t \t 
 
}, 
 
timeout: 2000, \t 
 
}; 
 

 
(function() { 
 
    var wf = document.createElement('script'); 
 
    wf.src = ('webfont.js'); 
 
    wf.type = 'text/javascript'; 
 
    wf.async = 'true'; 
 
    var s = document.getElementsByTagName('script')[0]; 
 
    s.parentNode.insertBefore(wf, s); 
 
})(); 
 
    
 
});