marky: Hintergrundmusik stoppen/starten

Ich versuche Hintergrundmusik auf einer Homepage einzubinden. Dies hat auch mit <object> und Flash super funktioniert. Mein Problem ist jetzt aber, dass beim Aufruf einer neuen Seite die Musik immer wieder neu gestartet wird, da logischerweise der Befehl neu gelesen wird. Ich möchte aber eine Lösung bei der die Hintergrundmusik einmal gestartet wird und wenn ich diese auf irgendeiner Seite stoppe, soll sie gestoppt bleiben und wenn ich sie auf irgendeiner Seite starte, soll sie laufen, bis ich sie wieder stoppe. Anfangs soll sie auch automatisch starten.
Hier noch der Code, wie er bis jetzt ist:
<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>
Wie kann ich also den Code platzieren, dass er für alle Seiten einer Homepage gilt?

Vielen Dank für Eure Hilfe!!

  1. Liebe(r) marky,

    das, was Du vorhast, geht (so) nicht. Wenn Dein Dokument durch das Anklicken eines Links durch ein neues Dokument ersetzt wird, dann wird dort ein "neuer" Flash-Film (Dein EMFF-Player) geladen. Neues Dokument bedeutet: Hat nix mit dem alten Dokument zu tun. Also kann weder eine bereits laufende Musik weiter abgespielt werden, noch kann das neue Dokument "wissen", was im alten Dokument hinsichtlich des Films gegolten haben soll.

    Lösung: Deine Musik muss in einem anderen Dokument abgespielt werden, welches zusätzlich zu Deinem eigentlichen Dokument geladen und angezeigt wird. Das kann entweder als Zweitfenster (Popup? - Besser nicht!), oder als Frame gemacht werden. Ich rate Dir zu einem "Spezial-Link", der die Beschallung auf Wunsch hin anbietet, und der beim Anklicken ein neues Fenster öffnet, in dem dann Deine Musik spielen kann. Dass dieser Spezial-Hintegrundmusiklink ein neues Fenster (oder Browsertab) öffnet, sollte bei dem Link unbedingt dabeistehen!

    Liebe Grüße,

    Felix Riesterer.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
    1. Guten Tag Felix Riesterer

      Das klingt ja echt einfach. Ist dies für nicht geübte Internetuser (welches meistens die User sind, die die Musik hören möchten), nicht ein bisschen verwirrend mit dem zusätzlichen Fenster? Kann ich das Ganze nicht in einem Fenster lösen? Mit Frames wird es wahrscheinlich schwierig, da ich das Gefühl habe, dass das positionieren mit meinem Homepageaufbau ein bisschen schwierig wird. Hier sonst noch die Homepage, auf welcher die Musik laufen soll: http://www.bonsailand-cats.ch/startseite.htm

      Die Lösung ist super, werde dies sonst einfach mal ausprobieren.

      Vielen Dank

      marky

      Ich rate Dir zu einem "Spezial-Link", der die Beschallung auf Wunsch hin anbietet, und der beim Anklicken ein neues Fenster öffnet, in dem dann Deine Musik spielen kann.»»

      1. Hi,

        Mit Frames wird es wahrscheinlich schwierig, da ich das Gefühl habe, dass das positionieren mit meinem Homepageaufbau ein bisschen schwierig wird.

        im Gegenteil, mit dieser Seitenaufteilung ist es sogar recht einfach:

        Ein iFrame über den gesamten Anzeigebereich und ein div für den "Player" mittels "position:fixed" am unteren, linken Rand fixieren.

        Mfg steohan

        1. Lieber steohan,

          Ein iFrame über den gesamten Anzeigebereich und ein div für den "Player" mittels "position:fixed" am unteren, linken Rand fixieren.

          Frames haben erhebliche Nachteile. Zum einen muss der Browser plötzlich drei Dokumente anstatt einem laden (das Frameset-Dokument oder von mir aus "Master"-Dokument", das Musik-Dokument und das eigentliche Seiteninhalt-Dokument), und zum anderen kann das Bookmarken einer Unterseite eventuell unmöglich werden, da in der Adressleiste nur noch die URL des Frameset-Dokuments steht.

          Weitere Aspekte zu (i)Frames gibt es hier: [molily über Frames]

          Liebe Grüße,

          Felix Riesterer.

          --
          ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
          1. Vier Anmerkungen:
            1. kann man iFrames nicht ohne Frameset einbinden? (hab keine Ahnung, ich benutzte nie Frames)
            2. Popup bzw. allgemein ein eigenes Fenster halte ich auch für die gelungenere Lösung. Ich kenne das z.B. von Jamendo so. Da kann man in den Benutzereinstellungen festlegen ob die Musik in einem eigenen Browserfenster laufen soll, in der Ecke der Website selbst (was ein Frame sein mag, hab mir das DOM nicht angeschaut) oder gar einfach als Playlist ausliefern, damit es in einem lokalen Player läuft.
            Die mittlere Lösung habe ich nie benutzt, die anderen beiden sehr wohl.
            3. Warum Flash und nicht <audio>?
            4. Die Krücke: Lege beim Verlassen der Seite einfach einen Cookie an wo der Player war und starte ihn beim Laden der neuen Seite an dieser Stelle. Das sollte bei schnellen Verbindungen/Rechnern nur wenig Ausfall verursachen (halbe Sekunde oder so), zumal das Musikstück selber idR im Cache des Browsers liegen dürfte und sofort zur Verfügung steht.

            Letztere Lösung erscheint mir zumindest die coolste/eleganteste zu sein, allerdings wohl weder die komfortabelste noch barriereärmste. Aber wer flash benutzt, den interessieren Barrieren wahrscheinlich eh nicht :)

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

              1. Warum Flash und nicht <audio>?

              Diese Version habe ich von der SelfHTML-Seite! Zu <audio> Habe ich nichts gefunden! ;-)

              Letztere Lösung erscheint mir zumindest die coolste/eleganteste zu sein, allerdings wohl weder die komfortabelste noch barriereärmste. Aber wer flash benutzt, den interessieren Barrieren wahrscheinlich eh nicht :)

              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?

              Liebe Grüsse

              marky

              1. 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:(
                1. <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>

                    
                  Muss ich keine Unterscheidung der Browser machen? Oder interpretieren diesen Code die Browser richtig? Jetzt habe ich ja das object-Element einfach im audio-Element. Werden dann nicht bei den neueren Browsern beide Code-Segmente interpretiert?  
                    
                  
                  > 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:  
                    
                  Kenne noch einige Leute, die keine Breitbandverbindung haben, deshalb verzichte ich vielleicht lieber darauf! ;-) Dazu kommt, dass Du ja selbst sagst, dass dies auch nicht Barrierefrei ist und bei vielen werden wahrscheinlich die Cookies eh geblockt! ;-))  
                    
                  Ansonsten, werde ich diese Version mal versuchen. Klingt gut und probieren geht bekanntlich über studieren! ;-)  
                    
                  Vielen Dank  
                    
                  marky
                  
                  1. Muss ich keine Unterscheidung der Browser machen? Oder interpretieren diesen Code die Browser richtig? Jetzt habe ich ja das object-Element einfach im audio-Element. Werden dann nicht bei den neueren Browsern beide Code-Segmente interpretiert?

                    Nein nein, wenn ein moderner Browser ein source-Element findet, welches er abspielen kann (d.h. 1. den Codec beherrscht und 2. die Datei auch findet), dann sucht er nicht mehr weiter.
                    Ein unmoderner Browser kennt weder das audio- noch das source-Element und landet folgerichtig auf dem objekt-Element.
                    Das von dir beschriebene Verhalten würde zutreffen, wenn das object-Element außerhalb des audio-Elements stünde.
                    Eine Browserweiche ist nicht notwendig, bei <p> machst du ja auch keine.

                    Kenne noch einige Leute, die keine Breitbandverbindung haben, deshalb verzichte ich vielleicht lieber darauf! ;-) Dazu kommt, dass Du ja selbst sagst, dass dies auch nicht Barrierefrei ist und bei vielen werden wahrscheinlich die Cookies eh geblockt! ;-))

                    Ansonsten, werde ich diese Version mal versuchen. Klingt gut und probieren geht bekanntlich über studieren! ;-)

                    Wie du schon sagtest, einfach probieren. Vielleicht läuft es ja auch gut genug ohne Breitband.
                    Ohne Cookies erfolgt das Playback natürlich wie unerwünscht immer wieder von vorne wenn man die Seite wechselt. Ohne JavaScript im Übrigen auch.
                    Ohne Flash funktioniert es aber (wenn man Gecko oder Presto oder Webkit oder KHTML benutzt).

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