2

看看这段代码:

http://jsbin.com/anecor/1

它的基本作用是使用两个不同的“字体系列”渲染两个不同的文本

使用文本#1,字体数据与文档一起加载。

对于文本 #2,字体数据会在页面加载 2 秒后附加到 head 标签。

如果您在可能的任何现代浏览器中尝试代码(我已经尝试过 Chrome、Firefox 和 iOS Safari),它将会工作,并且两种字体的样式都会正确设置;但是,如果你在 IE 10 上运行它,第二个字体将无法呈现。

没有错误消息,也不知道它为什么停止工作。

另外,我很确定(令人惊讶的是)它可以在 IE 9 上运行,因为我的大部分测试都是使用该浏览器进行的;但后来我最近升级到 Windows 8 并且只有 IE 10 atm,如果有人可以检查它并告诉我它在 IE 9 上工作/失败,将不胜感激。

有任何想法吗?解决方法?

4

2 回答 2

2

解决方案很简单。像这样加载字体:

var css = '@font-face {...}';
var s = document.createElement('style');
document.getElementsByTagName('head')[0].appendChild(s);
s.setAttribute('type', 'text/css');
if (s.styleSheet) { // IE
    s.styleSheet.cssText = css;
} else {
    s.appendChild(document.createTextNode(css));
}
于 2013-08-29T08:10:20.390 回答
0

发现这是 IE 上的一个错误(也不适用于 IE 11,所以这里我们有一个会持续很长时间的错误)。

还制定了一个解决方法,但它非常复杂(但它确实有效)。如果有一天有人感兴趣,请给我留言。

于 2013-07-26T02:37:53.073 回答