Как это сделать? #iefix разрешить загрузку веб-шрифтов в IE6-IE8?

Множество статей в сети: http://www.fontspring.com/blog/fixing-ie9-font-face-problems предлагаю добавить ?#iefix к URL-адресу. Мне было любопытно узнать, как это решит проблему. Спасибо.

Ответ 1

IE8 и старшие имеют ошибку в своих синтаксических анализаторах для атрибута src. Поэтому, если вы включаете более одного формата шрифта в SRC, IE не загружает его и сообщает о ошибке 404.
Вопросительный знак решает эту проблему, поскольку он обманывает IE, думая, что остальная часть строки (другая src) является строкой запроса, и поэтому загружает только файл EOT...
Другие браузеры будут следовать спецификации и загружать только их необходимый тип шрифта...
Вы можете прочитать Paul Irish Пуленепробиваемый синтаксис @font-face, чтобы узнать больше о некоторых других причинах...

Ответ 2

Вы можете сделать что-либо вместо ?#iefix: Основная цель - поместить ?#something после первого файла шрифта в URL-адрес, как уже ответил @Rexyz.

@font-face {
font-family: 'MyWebFont';
src: url('webfont.eot'); /* IE9 Compat Modes */
src: url('webfont.eot?#FooAnything') format('embedded-opentype'), /* IE6-IE8 */
     url('webfont.woff') format('woff'), /* Modern Browsers */
     url('webfont.ttf')  format('truetype'), /* Safari, Android, iOS */
     url('webfont.svg#svgFontName') format('svg'); /* Legacy iOS */
}

Ответ 3

?#iefix должен остановить браузер, интерпретируя любые символы после ? как строку запроса и, следовательно, предотвращает еще одну возможную ошибку сервера.