#iefix如何解决IE6-IE8中加载的网络字体?


Answers:


83

IE8和更早版本的src属性在解析器中存在错误。因此,如果您在SRC中包含多种字体格式,IE将无法加载它并报告404错误。
问号解决了该问题,因为它使IE认为字符串的其余部分(其他src)是查询字符串,因此仅加载EOT文件...
其他浏览器将遵循规范并仅加载其所需的字体类型。 ..
您可能想阅读Paul Irish的Bulletproof @ font-face语法,以进一步了解其他原因...


3
这不能回答其他哈希标记(?#)。在原始问题的链接中对此有预感,但这是含糊的。
commonpike 2012年

一点都不模糊:在极少数情况下,IE会失败,因为@ font-face声明中的字符太多。在大多数情况下,可以通过在“?”之后添加“#”哈希标记来解决此问题。问号。这为您购买了一些额外的房间。。。
DrCord

请注意,即使使用此修复程序,有时.eot字体也无法在IE8中使用(尽管字体可以在IE9 +中使用)。如果您有此问题,请尝试使用另一个ttf转换为eot转换器。
cakan 2015年

20

您可以执行任何操作来代替?#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 */
}

.otf字体的Safari浏览器,安卓,iOS的呢?
e9t

4

完全意识到这是一个老问题。

但是对于那些来这里寻找“该”浏览器版本的黑客来说,如果您不支持IE <10,现在可以安全删除。

因此,只需摆脱它,只需一行即可列举您提供的所有格式的所有字体。


3

使用?#iefix可以停止浏览器将后面的任何字符解释?为查询字符串,从而避免了其他可能的服务器错误。


您是说停止服务器解释任何字符吗?作为查询字符串。
Mark Fisher

它可以防止任何查询字符串附加到url的末尾(因为问号后面紧跟着一个哈希字符串)。哈希之后,可能会添加到url末尾的任何其他问号将仅被视为哈希的一部分。@Rexy Hoang的答案是一个更有用的答案:)
atwright147
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.