2012-03-06 3 views
2

Предположим, у меня есть webfont, определенный в правиле CSS @font-face. Во время выполнения я хочу добавить еще CSS через JS. Я не говорю о .Как предотвратить мерцание с двойным определением webfont?

Так получилось, что мой каркас иногда добавляет тот же самый @font-face правило. Оказывается, Firefox и Chrome пытаются повторно загружать (или загружать диск) файлы шрифтов, и это вызывает мерцание.

Demo: http://jsfiddle.net/Hg9Pc/ (Firefox, это частный случай, отлично работает в Chrome)

Есть ли способ, чтобы предотвратить это мерцание, кроме «просто не сделать это?» Сумасшедшие заголовки кешей или еще что-то?

+0

Вы должны изучить, почему ваша структура добавляет правило дважды. – RoToRa

+0

@RoToRa На самом деле, я частично написал структуру самостоятельно, и довольно сложно предотвратить эту проблему. Это, безусловно, возможно, но потребует много работы. – user123444555621

ответ

2

Я не думаю, что вы можете предотвратить мерцание, если вы на самом деле вызывают еще один звонок @font-face. Тем не менее, кажется, что вы могли бы сделать одно из следующих двух вещей:

  1. Имейте Javascript просеять и удалить, что дополнительное определение перед загрузкой его в страницу (это будет правда, будет довольно сложно задача, на мой взгляд, но не невозможная).

  2. Если вы можете, определите первоначальную реализацию с помощью другого имени шрифта. Например, исходный шрифт может быть определен как My Arial, поэтому позже, когда Arial (я знаю, что вы не использовали бы @font-face для Arial, это просто для примера) загружается через фреймворк (оба из которых указывают на тот же файл для определения) мерцание не должно происходить, потому что на самом деле страница не пытается заменить определение My Arial. Проблема с этим была бы, если бы был когда-нибудь экземпляр, где вы do хотите, чтобы он был переписан, это не так.

+0

1. Довольно многое, что я планировал сделать :) 2. Не вариант. В основном мое веб-приложение позволяет пользовательский CSS - думаю, JSFiddle без серверных поездок. Ну, не совсем, но что-то в этом роде. – user123444555621

+0

@ Pumbaa80 - пользовательский css, предназначенный только для создания раздела страницы, или он должен влиять на всю страницу? Вы пытаетесь избежать мерцания в своей области или на всей странице? – ScottS

+0

Оба. Я бы хотел показать код, но это проект с закрытыми исходными кодами в моей компании. – user123444555621

Смежные вопросы