var v = document.querySelector('video#vid');
var sources = v.querySelectorAll('source');
if (sources.length !== 0) {
var lastSource = sources[sources.length-1];
lastSource.addEventListener('error', function() {
alert('uh oh');
});
}
Der Link enthält nicht mehr das Wort “Fehler” und ich kann keine Informationen dazu finden.
– Alex L
3. Januar ’19 um 0:55
Gut zu wissen, dass Chrome und Firefox sich unterscheiden onerror Rückrufe. Der Fehler muss daher abgebildet werden. Mozilla verwendet error.originalTarget.
Hier ist ein Beispiel, wie man es mit reinem JavaScript macht:
const file="https://samples.ffmpeg.org/MPEG-4/MPEGSolution_jurassic.mp4";
window.fetch(file, {mode: 'no-cors'})
.then((response) => response.blob())
.then((blob) => {
const url = window.URL.createObjectURL(blob);
const video = document.createElement('video');
video.addEventListener('error', (event) => {
let error = event;
// Chrome v60
if (event.path && event.path[0]) {
error = event.path[0].error;
}
// Firefox v55
if (event.originalTarget) {
error = error.originalTarget.error;
}
// Here comes the error message
alert(`Video error: ${error.message}`);
window.URL.revokeObjectURL(url);
}, true);
video.src = url;
document.body.appendChild(video);
});
Das obige Beispiel ordnet ein eingehendes Fehlerereignis in a Medienfehler die verwendet werden kann, um eine Fehlermeldung bei der Wiedergabe anzuzeigen.
Dies ist definitiv eine vollständigere Antwort! Mein Bedürfnis nach detaillierteren Informationen zur Behandlung des Fehlers wurde gelöst 🙂
– Diniden
20. Juni ’19 um 15:03
Achtung für alle, die den Standard verwenden <video><source … /></video> Struktur werden die Fehler tatsächlich auf der source Elemente als @KennyKi geteilt. Ich kann auch keine Fehlerinformationen aus den Quellfehlern abrufen (Tests auf Chrome 79.0, Safari 13.0 und Firefox 71.0)
– Mr. Coles
21. Dezember ’19 bei 0:53
Aleš Kotnik
Um ein Fehlerereignis abzufangen, sollten Sie verwenden video.addEventListener():
var video = document.createElement('video');
var onError = function() { // your handler};
video.addEventListener('error', onError, true);
...
// remove listener eventually
video.removeEventListener('error', onError, true);
Beachten Sie, dass der 3. Parameter von addEventListener (bei Aufnahme) sollte auf true gesetzt werden. Das Fehlerereignis wird normalerweise von Nachkommen des Videoelements (Tags) ausgelöst.
Wie auch immer, auf Video-Tag angewiesen, um zu feuern und error Ereignis ist nicht die beste Strategie, um zu erkennen, ob ein Video abgespielt wurde. Dieses Ereignis wird auf einigen Android- und iOS-Geräten nicht ausgelöst.
Die zuverlässigste Methode, die ich mir vorstellen kann, ist zuzuhören timeupdate und ended Veranstaltungen. Wenn ein Video abgespielt wurde, erhalten Sie mindestens 3 timeupdate-Ereignisse. Im Fehlerfall, ended wird zuverlässiger ausgelöst als error.
Versuchen Sie stattdessen, den Ereignis-Listener zum Tag hinzuzufügen – ich denke, das onerror-Attribut (“Fehler” -Ereignis) funktioniert jetzt beim Quell-Tag, nicht beim Video-Tag.
Weißt du zufällig auch, wo man es in FireFox anbinden kann? Ich versuche, ein Video abzufangen, das nicht abgespielt wird (404 oder falsches Format), in Chrome kein Problem, aber FireFox weigert sich, mir die Kontrolle über die Fehler zu geben…
Weißt du zufällig auch, wo man es in FireFox anbinden kann? Ich versuche, ein Video abzufangen, das nicht abgespielt wird (404 oder falsches Format), in Chrome kein Problem, aber FireFox weigert sich, mir die Kontrolle über die Fehler zu geben…