Kai: Javascriptchaos ?

Hallo Profis,
habe ein gravierendes Problem:

ich habe in meinem Navigationsframe name="links" eine Bannerrotationfunktion eingebaut, die verschiedene URL-Ziele ansprechen kann. Wenn ich die Datei (links.html, vgl. Punkt C)) isoliert im Browser öffne und als basetarget="_top" eingegeben ist, geht das auch ohne Probleme. Jetzt ist die Datei (links.html) in zwei verschiedenen Framesets eingebunden, dh. in der ersten Frameseite (index1.htm). Dort ist links.html als linker Frame mit dem Name="links" definiert und soll nun die Links in der zweiten Frameseite (index2.htm) ausführen und zwar im Hauptframe name="mitte2". Das geht nicht, weil irgendeine Objectdefinition fehlt. Weiß einer von einen Rat, ob ich noch andere Funktionen einbinden muß, damit die Links im angestrebten Zielframe landen? Wäre sehr wichtig, da meine ganzer Frameaufbau sonst über den Haufen geschmissen wird :(

Frameseite1(index1.htm): besteht aus Navigationsmenue "oben", "links" und "mitte"
Frameseite2 (index2.htm): besteht aus einem weiteren Navigationsmenü "oben2" und "mitte2"

Nun möchte ich, daß mit folgender Seite (vgl. C) und darin implementierter Funktion die Ziel-URL in dem Frame "mitte2" angezeigt wird:

Hier der Code:
//A)Frameseite1 (index1.htm):

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//DE">
<html>

<head>
<title>index1</title>
</head>

<frameset framespacing="0" frameborder="0" border="false" rows="45,*">
  <frame name="oben" scrolling="no" target="Inhalt" src="oben.html" marginwidth="2"
  marginheight="2">
  <frameset cols="180,*">
    <frame name="links" target="links" src="links.html" scrolling="auto" marginwidth="2"
    marginheight="0">
    <frame name="mitte" src="index2.htm" scrolling="auto" marginwidth="5" marginheight="5">
  </frameset>
  <noframes>
  <body>

</body>
  </noframes>
</frameset>
</html>

//B)Frameseite2 (index2.htm):  
  
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//DE">
<html>

<head>

<base target="mitte2">
<title>Index2</title>
</head>

<frameset frameborder="0" framespacing="0" border="0" rows="40,*">
  <frame SRC="register.html" NAME="oben2" NORESIZE scrolling="no" marginwidth="0"
  marginheight="3" frameborder="0" framespacing="0" target="mitte2">
  <frame SRC="html/mitte.html" NAME="mitte2" scrolling="auto" frameborder="0"
  framespacing="0" target="mitte" marginwidth="2" marginheight="5">
  <noframes>
  <body>
  </body>
  </noframes>
</frameset>
</html>

//C)links.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//DE,EN">
<html>

<head>
<base target="mitte2">
<script LANGUAGE="JavaScript">

var sponsor = 1;

function GoSponsor() {
   if (sponsor==1) window.location.href="html/1.html";
   if (sponsor==2) window.location.href="html/2.html";
   if (sponsor==3) window.location.href="html/3.html";
   if (sponsor==4) window.location.href="html/4.html";
}

// function to rotate image (currently uses 4 images)
function rotate() {
   if (++sponsor > 4)  sponsor = 1;
   document.images[0].src = "w" + sponsor + ".gif";
   window.setTimeout('rotate();',5000);
}

</script>

<title>links</title>
</head>

<body onLoad="window.setTimeout('rotate();',5000);">
<div align="left">
<table border="0" cellpadding="5" cellspacing="10" width="110">
  <tr>
    <td bgcolor="#FF6633" height="110"><a HREF="javascript:GoSponsor();"><p align="center"><img
    NAME="w" SRC="w1.gif" width="100" height="100" border="0"></td>
  </tr>
  </table>
</div>
</body>
</html>

  1. Hallo Kai,

    Wenn ich die Datei (links.html, vgl. Punkt C)) isoliert im Browser öffne und als basetarget="_top" eingegeben ist, geht das auch ohne Probleme. Jetzt ist die Datei (links.html) in zwei verschiedenen Framesets eingebunden, dh. in der ersten Frameseite (index1.htm). Dort ist links.html als linker Frame mit dem Name="links" definiert und soll nun die Links in der zweiten Frameseite (index2.htm) ausführen und zwar im Hauptframe name="mitte2". Das geht nicht, weil irgendeine Objectdefinition fehlt. Weiß einer von einen Rat, ob ich noch andere Funktionen einbinden muß, damit die Links im angestrebten Zielframe landen?

    Also das Beispiel war mir jetzt zu umfangreich, um es bis in alle Einzelheiten zu analysieren. Aber: die Angabe <base target...> in der Datei mit Frame-Set-Definitionen erscheint mir ziemlich unsinnig, ebenso das target-Attribut in einer <frame>-Definition. Versuche besser, in der JavaScript-Funktion GoSponsor() vor den location.href's das Zielfenster korrekt zu adressieren. Probier mal parent.frames[1].location.href...

    Viele Gruesse
      Stefan Muenz

    1. Hallo Stefan,

      Also das Beispiel war mir jetzt zu umfangreich, um es bis in alle Einzelheiten zu analysieren. Aber: die Angabe <base target...> in der Datei mit Frame-Set-Definitionen erscheint mir ziemlich unsinnig, ebenso das target-Attribut in einer <frame>-Definition. Versuche besser, in der JavaScript-Funktion GoSponsor() vor den location.href's das Zielfenster korrekt zu adressieren. Probier mal parent.frames[1].location.href...

      Das habe ich ja versucht, es will aber nicht , weil es ja ein Frameset innnerhalb eines anderen FS anspricht:

      //C)links.html

      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//DE,EN">
      <html>

      <head>
      <script LANGUAGE="JavaScript">

      var sponsor = 1;

      function GoSponsor() {
         if (sponsor==1) parent.mitte2.location.href="html/1.html";
         if (sponsor==2) parent.mitte2.location.href="html/2.html";
         if (sponsor==3) parent.mitte2.location.href="html/3.html";
         if (sponsor==4) parent.mitte2.location.href="html/4.html";
      }

      // function to rotate image (currently uses 4 images)
      function rotate() {
         if (++sponsor > 4)  sponsor = 1;
         document.images[0].src = "w" + sponsor + ".gif";
         window.setTimeout('rotate();',5000);
      }

      </script>

      <title>links</title>
      </head>

      <body onLoad="window.setTimeout('rotate();',5000);">
      <div align="left">
      <table border="0" cellpadding="5" cellspacing="10" width="110">
        <tr>
          <td bgcolor="#FF6633" height="110"><a HREF="javascript:GoSponsor();"><p align="center"><img
          NAME="w" SRC="w1.gif" width="100" height="100" border="0"></td>
        </tr>
        </table>
      </div>
      </body>
      </html>