为了解决这个问题只发生在Firefox中的错误,我需要使用FontFace
的loaded
承诺。我目前使用下面的代码为:Internet Explorer中:忽略未知ES6语法
if (document.fonts) {
for (var fontFace of document.fonts.values()) {
if (fontFace['family'] == fontFamily) {
fontFace.loaded.then(doStuff);
}
}
} else {
doStuff();
}
这工作,只针对支持字体加载API的浏览器。但由于for .. of
,Internet Explorer会记录一个错误并停止执行JS。将代码放在try .. catch
块中不起作用,通过window.onerror
忽略错误可能会起作用,但相当不方便。
有没有一种方法可以迭代IE浏览器支持的document.fonts.values
,或者您知道更好的方式在支持它的浏览器中使用loaded
Promise吗?
使用不同的循环,它应该工作。 – alex
你是什么意思与不同的循环? 'document.fonts.values'返回一个迭代器,用'for .. in'或者用一个“normal”循环迭代不起作用。 – pingtux
_“有没有办法来遍历也由IE支持document.fonts.values” _没有,因为没有'document.fonts'在IE摆在首位。 – zeroflagL