javascript - 互联网浏览器 : Ignore unknown ES6 syntax

标签 javascript internet-explorer ecmascript-6

要修复仅在 Firefox 中出现的错误,我需要使用 FontFaceloaded Promise。我目前使用以下代码:

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 block 中不起作用,通过 window.onerror 忽略错误可能会起作用,但相当 hacky。

是否有一种方法可以迭代 IE 也支持的 document.fonts.values ,或者您是否知道在浏览器中使用 loaded Promise 的更好方法支持吗?

最佳答案

我推荐

const fontFace = Array.from(document.fonts).find(face => face.family === fontFamily);
if (fontFace) {
  fontFace.loaded.then(doStuff);
}

Array.from 从可迭代对象创建一个数组,然后您可以使用普通的 Array.prototype.some 来检查匹配。

然后您可以将整个检查简化为

const fontFace = document.fonts &&
  Array.from(document.fonts).find(face => face.family === fontFamily);

if (fontFace) fontFace.loaded.then(doStuff);
else doStuff();

假设您想要运行 doStuff(如果字体都不匹配)。

关于javascript - 互联网浏览器 : Ignore unknown ES6 syntax,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42435853/

相关文章:

javascript - IEs对 'this'的理解

javascript - 不希望 promise 吞噬错误

javascript - 如何获取以下 ES6 循环中的前面的文本?

javascript - 在javascript中计算导数

javascript - 没有 Alpha channel 的 Canvas toDataURL

html - Wordpress 照片上传错误

javascript - 子类中的 "ReferenceError: this is not defined"

javascript - 如果您曾经按下过该按钮,您只会看到 'one' 黑心。如果没有,您将看到一个 'white heart'

javascript - 如何生成 100 个随机数并检查每个随机数的素数?

IE 和 Edge 中缺少水平规则开头的 CSS Circle