Um einen Fehler zu beheben, der nur in Firefox auftritt, muss ich das loaded
Versprechen eines FontFace
verwenden. Ich verwende derzeit den folgenden Code für die:Internet Explorer: Ignoriere unbekannte ES6-Syntax
if (document.fonts) {
for (var fontFace of document.fonts.values()) {
if (fontFace['family'] == fontFamily) {
fontFace.loaded.then(doStuff);
}
}
} else {
doStuff();
}
Dies funktioniert und zielt nur den Browser, die den Schriftart Laden API unterstützen. Aber wegen der for .. of
protokolliert Internet Explorer einen Fehler und beendet die JS-Ausführung. Putting den Code in einem try .. catch
Block funktioniert nicht, ignorieren den Fehler über window.onerror
würde wahrscheinlich funktionieren, aber ist ziemlich hacky.
Gibt es eine Möglichkeit, über document.fonts.values
zu iterieren, das auch vom IE unterstützt wird, oder kennen Sie eine bessere Möglichkeit, das loaded
Versprechen in Browsern zu verwenden, die es unterstützen?
Verwenden Sie eine andere Schleife und es sollte funktionieren. – alex
Was meinst du mit einer anderen Schleife? 'document.fonts.values' gibt einen Iterator zurück, wobei das Iterieren mit' for .. in' oder mit einer "normalen" for-Schleife nicht funktioniert. – pingtux
_ "Gibt es eine Möglichkeit, über document.fonts.values zu iterieren, die auch von IE unterstützt wird" _ Nein, weil es in IE überhaupt keine 'document.fonts' gibt. – zeroflagL