How does ?#iefix solve web fonts loading in IE6-IE

2019-01-05 00:07发布

Lots of articles in the web like this : http://www.fontspring.com/blog/fixing-ie9-font-face-problems suggest to add a ?#iefixto the eot url. I was curious to know how is this going to solve the problem. Thanks.

4条回答
ゆ 、 Hurt°
2楼-- · 2019-01-05 00:56

The ?#iefix is there to stop the browser interpreting any characters after the ? as a query string and therefore prevents another possible server error.

查看更多
我只想做你的唯一
3楼-- · 2019-01-05 00:59

Fully realising this is an old question.

But for those who came here looking for what version of "that" browser needed this hack, it's safe now to remove if you don't support IE<10.

So just get rid of it and have just one line enumerating all fonts in all formats you offer.

查看更多
唯我独甜
4楼-- · 2019-01-05 01:02

You could do anything instead of ?#iefix: The basic objective is to put a ?#somethingafter the first font file in the URL as @Rexyz has already answered.

@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 */
}
查看更多
欢心
5楼-- · 2019-01-05 01:04

IE8 and the older have a bug in their parsers for the src attribute. So if you include more than 1 font format in the SRC, IE fails to load it and reports a 404 error.
The question mark solves that problem as it fools IE into thinking the rest of the string (other src) is a query string, and therefore loading just the EOT file...
Other browsers will follow the specification and load just their required font type ...
You may wanna read Paul Irish's Bulletproof @font-face syntax to know more about some other of the why's ...

查看更多
登录 后发表回答