red_death666: sound im iframe per Button in navigation ausschalten

Hallöchen Javascript Gurus!!!
Ich hätte da gerne ein Problem. Und zwar habe ich eine Seite in der ich  per Navigation HTML-Seiten in einem IFrame lade. Diese HTML-Seiten spielen eingebettete Sounds ab. Der letzte Navigationsbutton soll den Sound nun aus oder anstellen können. Ich weiß aber nicht, wie ich jetzt auf die im iframe geladene Seite den Sound aus- bzw. anstellen kann, denn es soll ja nur der Sound der im iframe geladene Seiten zu steuern sein. ich gebe euch mal den Quellcode der iframe Seite:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
   "http://www.w3.org/TR/html4/frameset.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de" debug="true">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Spongebob's Spielkiste</title>
<link rel="stylesheet" type="text/css" href="spongebob.css"/>
<script type="text/javascript" language="JavaScript" src="firebug.js">
</script>

</head>
<body class="spongebody1">
<div class="navi_menue">

<?php
echo"<div >
<a href='http://localhost/spielkiste.php'target='iframename'><img src='sponge_img/Steuerelemente_Hintergrund/startseite.gif' alt='Startseite_button' name='Startseite_button' border='0'/></a></div>
<br/>
<br/>
<div ><a href='http://localhost/Spongebobs_Krabbenburgerjagd.html' target='iframename'><img src='sponge_img/Steuerelemente_Hintergrund/krabbenburgerjagd_button.gif' alt='Krabbenburger_jagd_button' name='Krabbenburger_jagd_button' border='0'/></a>
</div>
<br/>
<br/>
<div ><a href='http://localhost/Spongebobs_Mastermind.html'target='iframename'><img src='sponge_img/Steuerelemente_Hintergrund/mastermind_button.gif' alt='Mastermind_button' name='Mastermind_button' border='0'/></a></div>
<br/>
<br/>
<div ><a href='http://localhost/highscore.php'target='iframename'><img src='sponge_img/Steuerelemente_Hintergrund/highscore_sponge.gif' alt='Highscore_button' name='Highscore_button' border='0'/></a></div>
<br/>
<br/>

Genau dieser Button soll auf die Sounds der anderen Links angewendet werden?!?

<div ><a href='          '><img src='sponge_img/Steuerelemente_Hintergrund/sound_button.gif' alt='Sound_an_aus_stellen' name='sound_button' border='0'/></a></div></div>";
?>

<iframe scrolling="no" src="http://localhost/spielkiste.php" width="880" height="520" name="iframename"  id="iframename" align="center" margintop="200" frameborder="0" noresize/>
</iframe>

</body>
</html>

Hier zeige ich euch den Quellcode einer  HTML Seite in der ich Sound eingebettet habe, diese ist wiederum in einem Frameset enthalten, was aber nicht bei allen Seiten der Fall ist:

Spongebobs_Krabbenburgerjagd.html

<frameset cols="0,*">
 <frame src="leer.html" marginheight=0 frameborder="0" framespacing="0" scrolling="no" noresize name="leer"/>
 <frame src="spiel.html" marginheight=0 frameborder="0" framespacing="0" scrolling="no" noresize name="spiel"/>
<noframes></noframes>

In der spiel.html ist der eingebettete sound, den ich gerne ausschalten will.

</head>

<body onLoad="initialisierung()">
<script>
document.write(schreibe_spielfeld_layer());
</script>
<script>
document.write(schreibe_hintergrund_layer());
</script>
<script>
document.write(schreibe_anleitung_layer());
</script>
<img src="sponge_img/Steuerelemente_Hintergrund/anleitung.gif">
</div>
<script>
document.write(schreibe_gegner_layer());
document.write(schreibe_krabbenburger_layer());
document.write(schreibe_pfannenwender_layer());
</script>
<script>
document.write(schreibe_spongebob_layer());
</script>
<img src="sponge_img/Spongebob/spongebob1.gif" name="img_spongebob"/>
</div>
<script>
document.write(schreibe_punktezahl_und_verbleibende_zeit_layer());
</script>
</div>
<embed src="sponge_mastersound/spongebob_background.mp3" type="audio/mp3" autostart=true mastersound loop=true hidden=true name="background" /></embed>
<embed src="sponge_mastersound/aua1.wav" type="audio/wav" autostart=false loop=false mastersound hidden=true name="aah" /></embed>
<embed src="sponge_mastersound/meins.wav" type="audio/wav" autostart=false loop=false mastersound hidden=true name="ham" /></embed>
</body>
</html>

Bitte, Bitte helfe mir einer, denn es ist ein Teil meiner Abschlußprüfung, und das letzte was an meiner Seite  sozusagen fehlt.

Liebe Grüße und frohes schaffen

Nicole

  1. Hallo Nicole,

    Ich hätte da gerne ein Problem. Und zwar habe ich eine Seite in der ich  per Navigation HTML-Seiten in einem IFrame lade. Diese HTML-Seiten spielen eingebettete Sounds ab. Der letzte Navigationsbutton soll den Sound nun aus oder anstellen können. Ich weiß aber nicht, wie ich jetzt auf die im iframe geladene Seite den Sound aus- bzw. anstellen kann, denn es soll ja nur der Sound der im iframe geladene Seiten zu steuern sein.

    Die Lösung liegt viel näher als du denkst. Und JavaScript brauchst du dafür auch nicht, sofern du einfach auf "Navigationsbuttons" verzichtest und auf einfache Links setzt.

    Deinen Quellcode habe ich mir nicht angeschaut, aber eine einfache Lösung wäre die folgende:

    1. Der Frame bzw. IFrame bekommt einen Namen, beispielsweise "soundtarget".
    2. Jeder Link zum Starten eines Sounds zeigt auf eine eigene HTML-Datei, die in diesen Frame geladen wird:

    <a href="sound1.html" target="soundtarget">Sound 1</a>  
    <a href="sound2.html" target="soundtarget">Sound 2</a>  
    <a href="sound3.html" target="soundtarget">Sound 3</a>
    

    Die drei HTML-Dateien sind mit dem entsprechenden HTML-Code für die Sound-Dateien versehen.

    3. Ein Link zum stoppen der Sounds kann so auch einfach realisiert werden (Datei "nosound.html" sollte man dazu erstellen):
    <a href="nosound.html" target="soundtarget">Sound ausschalten</a>

    So. Das wäre eine vernünftigere Lösung deines Problems.
    Noch besser wäre allerdings der gänzliche Verzicht auf Frames und der Verzicht auf das fehlerhafte Element "embed" - das kannst du beispielsweise mit dem EMFF erreichen.

    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:)
    1. Hallo Marc,

      So. Das wäre eine vernünftigere Lösung deines Problems.
      Noch besser wäre allerdings der gänzliche Verzicht auf Frames und der Verzicht auf das fehlerhafte Element "embed" - das kannst du beispielsweise mit dem EMFF erreichen.

      Ja Frames und mehr als einen über EMBED- eingebundenen Player bzw. ein BGSOUND-Element braucht man dazu nicht. "Fehlerhaft" und "nicht standardkonform" sind auch zwei verschiedene Dinge. Eine Script, das sicherstellt, dass jeweils nur ein Player gleichzeitig spielt, erübrigt sich so auch.

      Ständig ganze Webseiten komplett mitsamt Plugin neu zu laden, finde ich auch nicht so elegant. Man braucht doch nur die Source des Players dynamisch auszutauschen; warum gleich das Kind mit dem Bade (Die ganze Seite mit dem  Player) ausschütten?

      Ein Beispiel habe ich aktuell hier verlinkt:

      https://forum.selfhtml.org/?t=147562&m=957260

      Das funktioniert auch mit mehreren solcher Links, wenn man zwar den Sound, aber nicht gleich die ganze Seite mitsamt Player wechseln will.

      Gruß Gernot

      1. Hallo Gernot,

        Ja Frames und mehr als einen über EMBED- eingebundenen Player bzw. ein BGSOUND-Element braucht man dazu nicht. "Fehlerhaft" und "nicht standardkonform" sind auch zwei verschiedene Dinge. Eine Script, das sicherstellt, dass jeweils nur ein Player gleichzeitig spielt, erübrigt sich so auch.

        Wieso immer EMBED und BGSOUND? Entschuldung Gernot, wenn ich das jetzt sage, aber du scheinst mir sehr häufig gerade diese beiden Elemente zu vertreten - und ich kann einfach nicht verstehen, wieso.
        Zumal:

        • beide Elemente nicht standardkonform sind und in den meisten Browsern mittlerweile auch durch <object> ersetzt werden können
        • selbst dann ist es häufig der Fall, dass das gesuchte Plugin nicht installiert ist.

        Ich habe den EMFF damals doch genau aus diesem Grund entwickelt - weil Flash bislang das weit verbreitetste Multimedia-fähige Plugin ist.

        Ständig ganze Webseiten komplett mitsamt Plugin neu zu laden, finde ich auch nicht so elegant. Man braucht doch nur die Source des Players dynamisch auszutauschen; warum gleich das Kind mit dem Bade (Die ganze Seite mit dem  Player) ausschütten?

        Man kann die Lösung natürlich so anpassen, dass nur der Player ausgetauscht wird. Dann muss man jedoch auf JavaScript zurückgreifen. Und das Laden einer winzigen Webseite (der Player an sich ist sowieso bereits im Cache, sofern der Browser so eingestellt ist) dauert wirklich nicht lange. _Additiv_ zu den HTML-Seiten - ja, das wäre eine Möglichkeit.

        Ein Beispiel habe ich aktuell hier verlinkt:

        https://forum.selfhtml.org/?t=147562&m=957260

        Das funktioniert auch mit mehreren solcher Links, wenn man zwar den Sound, aber nicht gleich die ganze Seite mitsamt Player wechseln will.

        Das funktioniert bei mir jedenfalls nicht. Ich nutze Linux, und habe nicht das entsprechende Plugin installiert.

        Es ist ja nicht so, dass ich die Nutzung von <embed> und <bgsound> verteufele - aber die beiden sind nun bereits seit so langer Zeit totgesagt, dass man sie endlich begraben sollte.

        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:)
        1. Hallo Marc,

          Ich habe den EMFF damals doch genau aus diesem Grund entwickelt - weil Flash bislang das weit verbreitetste Multimedia-fähige Plugin ist.

          Naja, aber deswegen muss das proprietäre Flash doch nicht ohne Konkurrenz bleiben!

          Ständig ganze Webseiten komplett mitsamt Plugin neu zu laden, finde ich auch nicht so elegant. Man braucht doch nur die Source des Players dynamisch auszutauschen; warum gleich das Kind mit dem Bade (Die ganze Seite mit dem  Player) ausschütten?

          Man kann die Lösung natürlich so anpassen, dass nur der Player ausgetauscht wird. Dann muss man jedoch auf JavaScript zurückgreifen. Und das Laden einer winzigen Webseite (der Player an sich ist sowieso bereits im Cache, sofern der Browser so eingestellt ist) dauert wirklich nicht lange. _Additiv_ zu den HTML-Seiten - ja, das wäre eine Möglichkeit.

          Die Source kann man ja auch in Flash über LiveConnect dynamisch austauschen, ohne gleich die ganze Seite mitsamt EMBED- bzw. OBJECT-Element auszuschütten.

          https://forum.selfhtml.org/?t=147562&m=957260

          Das funktioniert bei mir jedenfalls nicht. Ich nutze Linux, und habe nicht das entsprechende Plugin installiert.

          Dann solltest du es installieren, was spricht dagegen? Und wenn Linux da tatsächlich nichts nichts anbieten sollte, dann spräche das nur gegen Linux.

          Gruß Gernot

    2. Hallo Marc,
      Es wäre einfacher gewesen, wenn ihr mir geholfen hättet, anstatt das ihr, du und Gernot sich in die Haare bekommen habt, was webkonform ist und was nicht.

      Dies steht bei mir im Moment garnicht zur Debatte. Denn helfen konntet ihr mir beide leider überhaupt nicht, ich finde es schade, das sich so intelligente Leute wie ihr um Nichtigkeiten streiten, anstatt anderen hilfebedürftigen Menschen zu helfen.

      Und wieso überhaupt Texten, wenn man sich nicht mal die Mühe macht den Quellcode durchzulesen.

      Ich finde es traurig, aber danke für nichts!!!!
      Liebe Grüße

      Nicole

      Ich hätte da gerne ein Problem. Und zwar habe ich eine Seite in der ich  per Navigation HTML-Seiten in einem IFrame lade. Diese HTML-Seiten spielen eingebettete Sounds ab. Der letzte Navigationsbutton soll den Sound nun aus oder anstellen können. Ich weiß aber nicht, wie ich jetzt auf die im iframe geladene Seite den Sound aus- bzw. anstellen kann, denn es soll ja nur der Sound der im iframe geladene Seiten zu steuern sein.

      Die Lösung liegt viel näher als du denkst. Und JavaScript brauchst du dafür auch nicht, sofern du einfach auf "Navigationsbuttons" verzichtest und auf einfache Links setzt.

      Deinen Quellcode habe ich mir nicht angeschaut, aber eine einfache Lösung wäre die folgende:

      1. Der Frame bzw. IFrame bekommt einen Namen, beispielsweise "soundtarget".
      2. Jeder Link zum Starten eines Sounds zeigt auf eine eigene HTML-Datei, die in diesen Frame geladen wird:

      <a href="sound1.html" target="soundtarget">Sound 1</a>

      <a href="sound2.html" target="soundtarget">Sound 2</a>
      <a href="sound3.html" target="soundtarget">Sound 3</a>

      
      >   
      > Die drei HTML-Dateien sind mit dem entsprechenden HTML-Code für die Sound-Dateien versehen.  
      >   
      > 3. Ein Link zum stoppen der Sounds kann so auch einfach realisiert werden (Datei "nosound.html" sollte man dazu erstellen):  
      > `<a href="nosound.html" target="soundtarget">Sound ausschalten</a>`{:.language-html}  
      >   
      >   
      > So. Das wäre eine vernünftigere Lösung deines Problems.  
      > Noch besser wäre allerdings der gänzliche Verzicht auf Frames und der Verzicht auf das fehlerhafte Element "embed" - das kannst du beispielsweise mit dem [EMFF](http://aktuell.de.selfhtml.org/artikel/grafik/flashmusik/index.htm) erreichen.  
      >   
      >   
      > Grüße  
      >   
      > Marc Reichelt || <http://www.marcreichelt.de/>  
      > 
      
      1. Hallo Nicole,

        Es wäre einfacher gewesen, wenn ihr mir geholfen hättet, anstatt das ihr, du und Gernot sich in die Haare bekommen habt, was webkonform ist und was nicht.

        1. Habe ich dir bereits eine Lösung für dein Problem geschildert - du hast sie aber anscheinend ignoriert.

        2. Gernot und ich streiten uns nicht - die Nicht-Standardkonformität von <bgsound> und <embed> steht außer Frage. Zwischen Meinungsverschiedenheiten und Streit besteht ein Unterschied.

        Dies steht bei mir im Moment garnicht zur Debatte. Denn helfen konntet ihr mir beide leider überhaupt nicht, ich finde es schade, das sich so intelligente Leute wie ihr um Nichtigkeiten streiten, anstatt anderen hilfebedürftigen Menschen zu helfen.

        Sowohl Gernot als auch ich haben dir Lösungen für dein Problem angeboten.
        Ich finde es schade, dass ein "hilfsbedürftiger Mensch" wie du diese Hilfe übersiehst.

        Und wieso überhaupt Texten, wenn man sich nicht mal die Mühe macht den Quellcode durchzulesen.

        Ich finde es traurig, aber danke für nichts!!!!

        Mit dieser Einstellung wirst du natürlich auch keine Hilfe mehr von mir bekommen - du hast sie ja nicht nötig.

        Übrigens: Vermeide TOFU.

        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:)