Adriana Mikolaskova Nautsch: swf-Datei mit innerhtml austauschen

Hallo,

ich würde gerne eine swf-Datei gegen eine andere austauschen, ohne die Seite neu zu laden,
Habe das mit folgender JavaScript-Funktion versucht:

function changes(){
  flashplayer = document.getElementById("player");
  flashplayer.innerHTML= "<object type="application/x-shockwave-flash" data="skins/emff_standard.swf?src=musik/pozvani_x1.mp3&amp;autostart=no" width="120" height="60"><param name="movie" value="skins/emff_standard.swf?src=musik/pozvani_x1.mp3&amp;autostart=no" /><param name="quality" value="high" /><param name="bgcolor" value="#ff8000" /></object>";}

Wenn ich mit innerhtml Bilder oder Text einsetze funktioniert das gut, aber wenn ich versuche, den Code für die swf-Datei einzufügen, wird nichts angezeigt..

Kann mir bitte jemand einen Hinweis geben, was ich falsch mache?

Danke und Gruss

Adriana

  1. Hallo Adriana,

    anstatt einen kompletten Flashfilm über JavaScript auszutauschen, was nicht nur über innerHTML, sondern ebenso über die Node-Methoden zum Schietern verurteilt sein dürfte, solltest du dir lieber einen Flashplayer bauen, in dem du selbst durch Knopfdruck zu einem anderen abzuspielenden Soundstück weiterschalten kannst.

    Gruß Gernot

    1. Hallo Gernot,

      anstatt einen kompletten Flashfilm über JavaScript auszutauschen, was nicht nur über innerHTML, sondern ebenso über die Node-Methoden zum Schietern verurteilt sein dürfte, solltest du dir lieber einen Flashplayer bauen, in dem du selbst durch Knopfdruck zu einem anderen abzuspielenden Soundstück weiterschalten kannst.

      Adriana bezieht sich aber doch auf den EMFF von Marc, das ist doch schon ein Flashplayer. Sie könnte mehrere davon laden und die ein- und ausblenden, wenn jeweils nur einer sichtbar sein soll. Oder kann dem EMFF eine neue mp3-Datei dynamisch zugewiesen werden? Was siehst du da für Möglichkeiten? Würde mich interessieren.

      Beste Grüsse
      Richard

      1. Hallo Richard.

        Oder kann dem EMFF eine neue mp3-Datei dynamisch zugewiesen werden? Was siehst du da für Möglichkeiten? Würde mich interessieren.

        In jedem Fall besteht die Möglichkeit, dem EMFF mehrere MP3s anzugeben.

        Ansonsten sollte es mit relativ geringem Aufwand möglich sein, dass data-Attribut des object-Elementes per DOM-Methoden zu manipulieren.
        Ob diese Änderung jedoch vom Browser hier im Zusammenspiel mit Flash bemerkt und umgesetzt wird, kann ich nicht abschätzen.

        Einen schönen Sonntag noch.

        Gruß, Ashura

        1. Hallo Ashura!

          In jedem Fall besteht die Möglichkeit, dem EMFF mehrere MP3s anzugeben.

          Was aber nur bewirkt, dass mehere Sounds nacheinander abgespielt werden.

          Ansonsten sollte es mit relativ geringem Aufwand möglich sein, dass data-Attribut des object-Elementes per DOM-Methoden zu manipulieren.

          Das scheint mir der richtige Ansatz zu sein. Es braucht ja nur der Pfad bzw. der Dateiname geändert werden.

          Ob diese Änderung jedoch vom Browser hier im Zusammenspiel mit Flash bemerkt und umgesetzt wird, kann ich nicht abschätzen.

          Der EMFF muss ja per Klick gestartet werden, dann wird auf die Datei zugegriffen, die nun angegeben ist.

          So richtig ist mir der Sinn der Sache allerdings nicht klar. Ich denke, dass mit einer Art Blätterfunktion Bilder und Texte getauscht werden und dann auch die zugehörige Sounddatei gewechselt werden soll. Deshalb der Versuch den Flashfilm, also den jeweiligen EMFF, ebenfalls per innerHTML zu wechseln, was aber nicht funktionieren kann. Dein Tipp mit der DOM-Methode scheint mir da goldrichtig zu sein. :)

          Beste Grüsse
          Richard

          1. Hallo Richard,

            So richtig ist mir der Sinn der Sache allerdings nicht klar. Ich denke, dass mit einer Art Blätterfunktion Bilder und Texte getauscht werden und dann auch die zugehörige Sounddatei gewechselt werden soll. Deshalb der Versuch den Flashfilm, also den jeweiligen EMFF, ebenfalls per innerHTML zu wechseln, was aber nicht funktionieren kann. Dein Tipp mit der DOM-Methode scheint mir da goldrichtig zu sein. :)

            Das mit der DOM-Methode wäre das idealste, wenn es funktioniert - könnte mir da jemand Feedback geben, wenn der/diejenige das austestet? Ich weise nur darauf hin, dass natürlich zwei Attribute auf ein Mal geändert werden müssen (die immer den selben Wert haben müssen).

            Ansonsten: Das mit dem innerHTML klappt auf jeden Fall, ausgetestet habe ich das auch gerade.

            Grüße

            Marc Reichelt || http://www.marcreichelt.de/

            --
            Linux is like a wigwam - no windows, no gates and an Apache inside!
            Selfcode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)
            http://emmanuel.dammerer.at/selfcode.html
  2. Hallo Adriana,

    function changes(){
      flashplayer = document.getElementById("player");
      flashplayer.innerHTML= "<object type="application/x-shockwave-flash" data="skins/emff_standard.swf?src=musik/pozvani_x1.mp3&amp;autostart=no" width="120" height="60"><param name="movie" value="skins/emff_standard.swf?src=musik/pozvani_x1.mp3&amp;autostart=no" /><param name="quality" value="high" /><param name="bgcolor" value="#ff8000" /></object>";}

    Bei mir funktioniert der Code wunderbar. Ich habe ihn noch ein wenig aufgeräumt, und hier ist mal meine test.html:

      
    <?xml version="1.0" ?>  
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">  
    <html xmlns="http://www.w3.org/1999/xhtml">  
     <head>  
      <title>Test</title>  
      <script type="text/javascript">  
      <!--  
      
    [code lang=javascript]  function changes() {  
       flashplayer = document.getElementById("player");  
       flashplayer.innerHTML =  
       "<object type=\"application/x-shockwave-flash\" " +  
        "data=\"skins/emff_standard.swf?src=musik/pozvani_x1.mp3&amp;autostart=no\" " +  
        "width=\"120\" height=\"60\">\n" +  
       " <param name=\"movie\" value=\"skins/emff_standard.swf?src=musik/pozvani_x1.mp3&amp;autostart=no\" />\n" +  
       " <param name=\"quality\" value=\"high\" />\n" +  
       " <param name=\"bgcolor\" value=\"#ff8000\" />\n" +  
       "</object>";  
      }
    

    //-->
      </script>
     </head>
     <body>
      <p><a href="javascript:changes();">EMFF anzeigen</a></p>
      <p id="player">Hier soll der EMFF hin...</p>
     </body>
    </html>
    [/code]

    Dabei sieht meine Ordnerstruktur zum Testen so aus:
     test.html
       skins/emff_standard.swf
       musik/pozvani_x1.mp3

    Den Macromedia Flash Player hast du auch installiert, ja? ;-)

    Freundliche Grüße

    Marc Reichelt || http://www.marcreichelt.de/

    --
    Linux is like a wigwam - no windows, no gates and an Apache inside!
    Selfcode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)
    http://emmanuel.dammerer.at/selfcode.html
    1. Hallo Marc,

      vielen Dank für's aufräumen!

      Bei mir funktioniert der Code wunderbar. Ich habe ihn noch ein wenig aufgeräumt, und hier ist mal meine test.html:

      Jetzt funktioniert's auch bei mir wunderbar...(mir ist allerdings unklar weshalb...?)

      Gruss

      Adriana

      1. Hallo Adriana,

        Jetzt funktioniert's auch bei mir wunderbar...(mir ist allerdings unklar weshalb...?)

        Hast du im HTML-Dokument auch ein Element mit dem Attribut id="player" gehabt? Was hat deine JavaScript-Konsole im Firefox gesagt?

        Grüße

        Marc Reichelt || http://www.marcreichelt.de/

        --
        Linux is like a wigwam - no windows, no gates and an Apache inside!
        Selfcode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)
        http://emmanuel.dammerer.at/selfcode.html