Ich versuche, ein lokales Fallback für font-awesome zu erstellen, und ich habe einige Probleme beim Hinzufügen des <link>
Tags zum <head>
Element, wenn das CDN lädt nicht.Anhängen eines lokalen CSS-Fallback für font-awesome, wenn der CDN nicht geladen werden kann
erwartetes Verhalten
Wenn die GET-Anforderung an das CDN erzeugt einen anderen Status als 200 auf Seite laden, ein Link auf die lokale Version von font-awesome sollte das <head>
Element hinzugefügt werden.
tatsächliches Verhalten
Eine nicht bestandene GET-Anforderung an das CDN nicht hinzufügen, einen Link auf die lokale Version von Font-awesome zum <head>
Elemente.
Das Problem scheint innerhalb des Codeblocks zu geschehen, der mit xmlHttp.onreadystatechange = function() {
beginnt.
Wenn ich parentElement.insertBefore(createFallback, referenceElement);
außerhalb des xmlHttp.onreadystatechange = function() {
Blocks verschiebe, wird die Verbindung zum lokalen Fallback zum Element hinzugefügt. Aber ich verstehe nicht, warum es nicht innerhalb des Codeblocks funktioniert.
Ich möchte in der Lage zu erkennen, ob die CDN ist, und wenn ja, wenden Sie einen Link auf die lokale Version von font-awesome. Ich bin keine Fehlermeldungen in der Konsole empfangen, während der Anzeige der Seite,
Mein Code ist unten:
<!doctype html>
<html class="no-js" lang="">
<head>
<link id="fontAwesomeFallback" rel="stylesheet" href="#">
<script>
// Define Variables
var createFallback = document.createElement("link");
createFallback.type = "text/css";
createFallback.rel = "stylesheet";
createFallback.href = "/css/font-awesome.css";
var referenceElement = document.getElementById("fontAwesomeFallback");
var parentElement = referenceElement.parentNode;
// Open Http Request
xmlHttp = new XMLHttpRequest();
xmlHttp.open("GET", "https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.3.0/css/font-awesome.min.css", true);
xmlHttp.onreadystatechange = function() {
if (xmlHttp.readyState == 4 && xmlHttp.status !== 200) {
parentElement.insertBefore(createFallback, referenceElement);
console.log("Local fallback appended to head element");
}
}
</script>
</head>
<body>
</body>
</html>
ich wirklich jede Hilfe dankbar würden Sie alle bieten kann!
Danke!
Aren‘ t fehlt Ihnen 'xmlHttp.send();'? –
@ JakubRożek Ich habe es nach dem XmlHttp.onreadystatechange Block hinzugefügt, und es funktioniert jetzt. Vielen Dank! Ich schätze die Hilfe sehr! – LearningToCode