0

Ich habe ein HTML-Audio-Element und ich setze dynamisch die "src" -Eigenschaft des Elements auf eine Audiodatei, die in unserem lokalen Netzwerk gespeichert ist.Wie kann ich einen 404-Fehler in Javascript abfangen?

Dies ist, wie es funktioniert:

function setSource(source) { 
    audio.src = source; 
} 

var audio = new Audio(); 
var source = "http://localhost/folder/file.mp3"; 
setSource(source); 

die Audiodatei, die ich zeigen werde Manchmal muss einen fehlerhaften Link und dies bewirkt, dass ein 404-Fehler erzeugt werden und an die Browser-Konsole angemeldet.

enter image description here

Ich möchte die 404-Fehler in der Lage sein zu fangen, um sie an der Konsole angemeldet ist, zu verhindern.

Dies ist, wie ich es versucht:

function setSource(source) { 
    try { 
    audio.src = src; 
    }//end try 
    catch (e) { 
    //do nothing 
    }//end catch 
}//end setSource 

var audio = new Audio(); 
var source = "http://localhost/folder/file.mp3"; 
setSource(source); 

Leider meine try/catch-Anweisung tut absolut nichts und der Fehler wird noch an der Konsole angemeldet. Mache ich etwas falsch?

Aufgrund der Natur meiner App wird es viele 404 Fehler geben, was normal und erwartet ist, aber es sieht wirklich instabil und "hässlich" für die Benutzer aus (wenn sie zufällig die Konsole öffnen).

FYI: Ich benutze Google Chrome.

+0

Ich glaube nicht, dass Sie Leute Fehler in google chrome Konsole überprüfen können, wenn es ein Fehler ist, wird Google es loggen – Mindless

+0

Aufgrund der Natur meiner App wird es viele 404 Fehler geben, die normal und erwartet ist , aber es sieht wirklich instabil und "hässlich" für die Benutzer aus (wenn sie zufällig die Konsole öffnen) - Ich habe dies in den Körper meiner Frage hinzugefügt :) – cleverpaul

+1

@ guest271314 - wird ein ServiceWorker verhindern, dass die Netzwerkanforderung protokolliert wird? –

Antwort

1
audio.onload = function() { 
    console.log('success'); 
}; 
audio.onerror = function() { 
    console.log('fail'); 
}; 
audio.src = 'http://localhost/folder/file.mp3'; 
+0

Dies meldet "fehlgeschlagen" an die Konsole sowie den Standardfehler. – cleverpaul

+2

Sie können es protokollieren "der obige Fehler ist nichts, worüber Sie sich sorgen, Ruhe bewahren und weiter surfen" - oder etwas ebenso sicher für den Endbenutzer: p Sie können Netzwerkanforderungen nicht vom Endbenutzer verbergen, die eine wahrgenommen werden könnte "Sicherheit" oder "Datenschutz" durch den Endbenutzer –

0

In diesem Fall ist die Protokollierung von HTTP-Fehler im Browser-Konsole ein Feature exklusiv für den Browser und nicht die von Javascript, oder jedem anderen Website-Code.

Dies kann nicht verhindert werden.

Verwandte Themen