Linuchs: mp3 SelfHTML Playlist „hängt“ bei ungültiger URL

problematische Seite

Moin,

Hier der Zwischenstand der Playlist. Die zufällige Reihenfolge ist noch nicht programmiert. So ganz zufällig ist sie eben nicht, da soll ja nicht zweimal hintereinandser dasselbe Lied kommen.

In einer anderen Domain teste ich ein paar hundert Titel aus der DB, natürlich gefiltert, nicht alle gleichzeitig.

Da kommt es immer wieder vor, dass eine mp3-URL nicht erreichbar ist, dann „hängt“ die Playlist. Sollte aber mit dem nächsten Titel fortfahren.

Wie kann ich mit JS erkennen, ob der Titel noch geladen wird oder nicht vorhanden ist?

Ich habe die audio-events nicht gefunden, die möchte ich bei Beschreibung der Playlist gerne komplett auflisten

Gruß, Linuchs

  1. problematische Seite

    1. problematische Seite

      Hallo Linuchs,

      gut, das error Event hätte ich jetzt auch vermutet, mich irritierte nur, dass das bei MDN nicht aufgelistet war (die HTML Referenz des Selfwiki geht auf Events leider gar nicht ein) und die Event-Referenz lässt das audio-Element vermissen (just fixed).

      Darum wollte ich erstmal probieren und zanke mich seither mit meinem IIS über Nichtigkeiten herum…

      Rolf

      --
      sumpsi - posui - obstruxi
  2. problematische Seite

    Hallo Linuchs,

    die play-Methode des audio-Elements liefert ein Promise. Das resolved bei erfolgreichem Start und geht bei einem Ladefehler auf Reject.

    audio.play()
      .catch(function(fehler) {
         console.log("Fehler: " + fehler);
         // nächstes Lied starten
      })
    

    Guckst Du hier in den Quellcode

    Rolf

    --
    sumpsi - posui - obstruxi
    1. problematische Seite

      Hallo Rolf,

      danke dir, dass du dich (mal wieder) so in ein Problemlösung reinkniest.

      Ich nutze das error-Event vom audio-Element, um den Titel in der Playlist mit dem Wort error zu ergänzen und dann weiter zum nächsten Titel.

      Gruß Linuchs

      1. problematische Seite

        Hallo Linuchs,

        sicher, das kann man auch tun. Das Promise von .play() zu nutzen könnte aber geradliniger sein.

        Rolf

        --
        sumpsi - posui - obstruxi