Deus Figendi: Hintergrundmusik stoppen/starten

Beitrag lesen

Mich interressieren Barrieren sehr wohl! Darum habe ich auch gefragt, ob es eine andere Version, als ein neues Fenster gibt. ;-) Welche Barrieren gibt es denn bei Flash?

^^ Flash ist eine einzige Barriere. Der einzige Screenreader, der überhaupt etwas damit anfangen kann ist JAWS und der macht das nicht besonders gut. Wenn jemand sehbehindert ist und keinen Screenreader benutzt, sondern nur eine Braillezeile kann er gar nichts mit Flash anfangen außer es würde diese explizit ansteuern (was es aber soweit ich weiß noch nicht kann).
Kleine Einschränkung: In deinem Anwendungsfall muss man das Flash ja "optisch" gar nicht wahrnehmen, es soll ja nur Geräusche machen. Dennoch: Wer eh kein Flash benutzen kann wird ggf. das Plugin dazu nicht installieren.
Und dann gibt es noch andere gute Gründe das Plugin nicht aktiv zu haben, weshalb es einfach genügend Leute gibt, bei denen es abgeschaltet ist. Man braucht es ja eh nicht wirklich.

Aber siehe dort am Horizont winkt eine Lösung und sie ist gut und simpel.

<audio autoplay="autoplay" loop="loop">  
   <source src="Hintergrundmusik.ogg" type="audio/ogg">  
   <source src="Hintergrundmusik.mp3" type="audio/mpeg">  
   <source src="Hintergrundmusik.webm" type="audio/webm">  
   <!-- Fallback fuer Steinzeitbrowser, die kein <audio> koennen, dein alter Code: -->  
   <object type="application/x-shockwave-flash" data="emff_silk_button.swf" width="16" height="16">  
     <param name="movie" value="emff_silk_button.swf">  
     <param name="bgcolor" value="#330066">  
     <param name="FlashVars" value="src=Hintergrundmusik.mp3&amp;autostart=no&amp;repeat=yes&amp;volume=35">  
   </object>  
</audio>  

Wenn du das jetzt in ein eigenes Fenster oder einen Frame packst, der nicht neu geladen wird ist alle schon fertig.
Wenn du aber meine Idee oben folgen möchtest, dass das Playback einfach dorthin gespult wird, wo es abgebrochen ist, dann machst du noch ein bisschen JavaScript:
Du reagierst auf onunload-Event des Bodyelements und speicherst currentTime des audio-Elements in ein Cookie.
Du reagierst auf das onload-Event des Bodyelements und liest den Cookie aus und setzt die currentTime auf den Wert der im Cookie steht.
Eigentlich schon fertig. Aber da loop z.T. noch fehlerhaft läuft in manchen Browsern (Mozilla-Engine) kannst du auch noch auf das ended-Event des audio-Elements lauschen und den player wieder starten mit audioElement.play(); (das kannst du natürlich auch onload machen, aber autoplay sollte eigentlich funktionieren).

Das war's schon. Bei Breitbandverbindungen würde ich mit Unterbrechungen unter einer Sekunde rechnen.

--
sh:( fo:| ch:? rl:( br:& n4:& ie:{ mo:} va:) de:µ_de:] zu:) fl:( ss:| ls:[ js:(