Gibt es eine Möglichkeit, mithilfe von Javascript festzustellen, ob eine Ressource auf dem Server verfügbar ist? Zum Beispiel habe ich Bilder 1.jpg - 5.jpg in die HTML-Seite geladen. Ich möchte jede Minute eine JavaScript-Funktion aufrufen, die ungefähr den folgenden Scratch-Code ausführt ...
if "../imgs/6.jpg" exists:
var nImg = document.createElement("img6");
nImg.src = "../imgs/6.jpg";
Gedanken? Vielen Dank!
javascript
0xhughes
quelle
quelle
fileExists
wäre ein besserer Name, da diese Funktion nicht überprüft, ob das Bild auf dem Server vorhanden ist. Es wird geprüft, ob auf die Datei vom Server aus zugegriffen werden kann. Es wird nicht überprüft, ob es sich bei dieser Datei tatsächlich um ein Bild handelt. Es kann sich um .pdf, .html handeln, eine zufällige Datei, die in * .jpg oder * .png umbenannt wurde. Wenn etwas mit .jpg endet, heißt das nicht, dass es 100% Bild ist :)Image
Objekts unterliegt dieser Einschränkung nicht. Der einzige Vorteil davon ist, dass das Bild nicht heruntergeladen wird.Sie können die grundlegende Funktionsweise von Bildvorladern verwenden, um zu testen, ob ein Bild vorhanden ist.
JSFiddle
quelle
return
Aussage tun, wie sie @ajtrichards im ersten Teil seiner Antwort hat.Sie können einfach überprüfen, ob das Bild geladen wird oder nicht, indem Sie die integrierten Ereignisse verwenden, die für alle Bilder bereitgestellt werden.
Das
onload
undonerror
Veranstaltungen werden Ihnen sagen , ob das Bild erfolgreich geladen wurde oder ein Fehler ist aufgetreten:quelle
error
Handler aus.Wenn jemand auf diese Seite kommt, um dies in einem React- basierten Client zu tun , können Sie Folgendes tun: Dies war ein Antwort-Original, das Sophia Alpert vom React-Team hier bereitgestellt hat
quelle
Wenn Sie ein Image-Tag erstellen und es dem DOM hinzufügen, sollte entweder das Onload- oder das Onerror-Ereignis ausgelöst werden. Wenn ein Fehler ausgelöst wird, ist das Image nicht auf dem Server vorhanden.
quelle
Ein besserer und moderner Ansatz besteht darin, mithilfe der ES6- Abruf-API zu überprüfen, ob ein Bild vorhanden ist oder nicht:
Stellen Sie sicher, dass Sie entweder Anfragen mit demselben Ursprung stellen oder CORS auf dem Server aktiviert ist.
quelle
Sie können diese JS-Funktion aufrufen, um zu überprüfen, ob eine Datei auf dem Server vorhanden ist:
quelle
Grundsätzlich antwortet eine vielversprechende Version von @espascarello und @adeneo mit einem Fallback-Parameter:
Hinweis: Ich persönlich mag die
fetch
Lösung vielleicht mehr, aber sie hat einen Nachteil: Wenn Ihr Server auf eine bestimmte Weise konfiguriert ist, kann er 200/304 zurückgeben, auch wenn Ihre Datei nicht vorhanden ist. Dies wird andererseits die Arbeit erledigen.quelle
fetch
Sie die verwenden könnenok
Eigenschaft desresponse
Objekts zu überprüfen , ob die Anforderung erfolgreich war oder nicht:fetch(url).then(res => {if(res.ok){ /*exist*/} else {/*not exist*/}});
background-image: url('/a/broken/url')
gibt mir200
undok
(Chrome 74).Sie können dies mit Ihren Axios tun, indem Sie den relativen Pfad zum entsprechenden Bilderordner festlegen. Ich habe dies getan, um eine JSON-Datei zu erhalten. Sie können dieselbe Methode für eine Bilddatei ausprobieren. Sie können sich auf diese Beispiele beziehen
Wenn Sie bereits eine Axios-Instanz mit baseurl als Server in einer anderen Domäne festgelegt haben, müssen Sie den vollständigen Pfad des statischen Dateiservers verwenden, auf dem Sie die Webanwendung bereitstellen.
Wenn das Bild gefunden wird, lautet die Antwort 200 und wenn nicht, 404.
Wenn sich die Bilddatei im Assets-Ordner in src befindet, können Sie eine Anforderung ausführen, den Pfad abrufen und den obigen Aufruf mit diesem Pfad ausführen.
quelle
Das funktioniert gut:
quelle
Über diesen Link können Sie überprüfen, ob eine Bilddatei mit JavaScript vorhanden ist.
quelle