xNeTworKx: Opera6, was ist so schwer an target="iframe" zu verstehen ?

Hallo,
folgendes kleines Problem:
Ich habe einen Link auf Fotos, wenn man diesen klickt öffnet sich ein kleines PopUp mit Thumpnails darin. Wenn man die Thumpnails anklickt werden sie bei IE und NS richtig im IFRAME (, das den Namen iframe hat) der Hauptseite dargestellt. Nur warum kann der Opera 6 das nicht ? Ist für Opera ein IFRAME kein richtiges Frames, daß er target="iframe" ignoriert ? Anstatt das er es im Iframe darstellt, öffnet er ein Fenster mit dem Bild darin.
Kann man da eigentlich was dagegen tun ?

  1. Hallo!

    Ich habe einen Link auf Fotos, wenn man diesen klickt öffnet sich ein kleines PopUp mit Thumpnails darin.

    Fehler #1: Popups sind böse[tm]. ;-) Achja, es heißt Thumbnails (Daumennägel).

    Wenn man die Thumpnails anklickt werden sie bei IE und NS richtig im IFRAME (, das den Namen iframe hat) der Hauptseite dargestellt. Nur warum kann der Opera 6 das nicht ?

    Opera kann das. Vielleicht postest du mal Deinen Code, damit man Dir sagen kann, warum es im speziellen Falle nicht funktioniert.

    Anstatt das er es im Iframe darstellt, öffnet er ein Fenster mit dem Bild darin.

    Eigentlich dürfte es nichts damit zu tun haben, dass sich die von Dir beschriebene Situation , aber prüfe doch noch einmal bspw. Deine window.open-Funktion.

    <a href="http://domain.tld/foo/" target="innerframe">murks</a><br>
    <iframe src="platzhalter.html" noresize="noresize" scrolling="no" frameborder="0" style="margin:0px; width:200px; height:45px;" name="innerframe">Ohne Frames geht nix.</iframe>

    Das funktioniert zum Beispiel.

    Kann man da eigentlich was dagegen tun ?

    <faq/#Q-07c>

    Grüße,
    Mathias

    1. Hallo,
      also ich glaube, daß am Code nichts ungewöhliches ist .
      Hier die Datei (DIE SICH IM IFRAME BEFINDET), die das Popup öffnet

      <html>
      <head>
      <title>Fotos</title>
      <script language="JavaScript" type="text/javascript">
        function oeffnen()  {
        Fenster = window.open("fotos_auswahl.html","Zweitfenster","width=145, height=400, resizable=yes, scrollbars=yes")
        }
      </script>
      </head>
      <body bgcolor="black" onLoad="javascript:oeffnen()">
      </body>
      </html>

      ------------------------
      Hier das Popup :

      <html>
      <head>
      <style type="text/css">
      img {border:0px}
       body {font-family:Arial Black; font-size:12px; color:#00ff00;
        scrollbar-base-color:#000000;
        scrollbar-3dlight-color:#FFFFFF;
        scrollbar-arrow-color:#00ff00;
        scrollbar-darkshadow-color:#000000;
        scrollbar-face-color:#00af00;
        scrollbar-highlight-color:#FFFFFF;
        scrollbar-shadow-color:#000000;
        scrollbar-track-color:#000000;
        }
      </style>
      <script language="JavaScript">

      self.moveTo(screen.width - 200, screen.height - 600);

      normal1 = new Image();
      normal1.src = "legokleindark.jpg";
      highlight1 = new Image();
      highlight1.src = "legoklein.jpg";

      normal2 = new Image();
      normal2.src = "lego2kleindark.jpg";
      highlight2 = new Image();
      highlight2.src = "lego2klein.jpg";

      normal3 = new Image();
      normal3.src = "party1kleindark.jpg";
      highlight3 = new Image();
      highlight3.src = "party1klein.jpg";

      function Bildwechsel(Bildnr,Bildobjekt)
             {
         window.document.images[Bildnr].src = Bildobjekt.src;
             }
       </script>
      <title>Fotos</title>
      </head>
      <body bgcolor="black">
      <a href="lego.html" target="iframe" onMouseOver="Bildwechsel(0,highlight1)"
      onMouseOut="Bildwechsel(0,normal1)"><img src="legokleindark.jpg"></a>

      <a href="lego2.html" target="iframe" onMouseOver="Bildwechsel(1,highlight2)"
      onMouseOut="Bildwechsel(1,normal2)"><img src="lego2kleindark.jpg"></a>

      <a href="party1.html" target="iframe" onMouseOver="Bildwechsel(2,highlight3)"
      onMouseOut="Bildwechsel(2,normal3)"><img src="party1kleindark.jpg"></a>

      </body>
      </html>

      1. Hallo, xnetworkx!

        also ich glaube, daß am Code nichts ungewöhliches ist .

        Naja, der Code ist zwar für dich nicht ungewöhnlich, aber im Vergleich mit geltenden Standards ist er mehr als ungewöhnlich, besser gesagt fehlerhaft. :)

        Ich habe mal eine Musterlösung erarbeitet, vielleicht sagt sie dir zu, ansonsten scheine ich dich missverstanden zu haben. Ich verstehe auf jeden Fall nicht die Logik, die hinter dem Öffnen des Fensters steckt.

        Erstmal ein Fehler:

        Fenster = window.open("fotos_auswahl.html","Zweitfenster","width=145, height=400, resizable=yes, scrollbars=yes")

        Du darfst keine Leerzeichen im 'window features'-Parameter ("width=400...") verwenden. Lies mal http://dcljs.de/faq/antwort.php?Antwort=fenster_winopen.

        Nun zur Musterlösung. Der Code ist auf Nötigste begrenzt und deswegen natürlich nicht standardkonform, ich habe das unwichtige herausgekürzt.

        So, erst einmal die Stammdatei, in der das Inner Frame erscheint. Ich habe sie base.html genannt:
        --8<--
        <html>
        <body>
        <iframe src="eins.html" name="iframe" scrolling="no" frameborder="1" width="640" height="480">Alternativtext bei ausgeschalteten Frames (logischerweise ein <a href="eins.html">Alternativlink</a>)</iframe>
        </body>
        </html>
        -->8--
        Beachte name="iframe".

        eins.html ist die Datei, die im Inner Frame anfangs angezeigt wird.
        --8<--
        <html>
        <head>
        <script type="text/javascript">
        function oeffnen()  {
         fenster=window.open("zwei.html", "zweitfenster", "width=320,height=200,resizable=yes,scrollbars=yes");
        }
        </script>
        </head>
        <body onload="oeffnen();">
        <p><a href="zwei.html" onclick="oeffnen(); return false;">Alternativlink: Auswahlfenster öffnen</a></p>
        </body>
        </html>
        -->8--

        Diese Seite öffnet durch den Event-Handler onload das Fenster. Hier könnte auch eine Fehlerquelle bezüglich Opera liegen, denn bei Opera kann man eine Seite verbieten, per onload Fenster zu öffnen. Überprüfe doch einmal dahingehend deine Einstellungen (Schnelleinstellungen mit der Taste [F12] oder unter Einstellungen->Fenster->Fenster für Webseiten->Öffnen neuer Fenster). Deswegen habe ich den Alternativlink eingefügt, auf onload kann man sich nicht vertrauen.

        Nun zwei.html, welche die Seite ist, die in dem geladenen Fenster angezeigt wird.
        --8<--
        <html>
        <body>
        <a href="bild1.html" target="iframe">Bild 1</a><br>
        </body>
        </html>
        -->8--

        Als target wird hier einfach iframe angegeben. Seltsamerweise funktioniert es so - ich hätte auf _parent getippt. :-)
        Wenn man also nun im Popup den Link klickt, wird im inner frame des Hauptfensters die gewünschte Seite geöffnet. So wolltest du es doch, oder?

        Zum Schluss noch das Listing von bild1.html, welches nur eine Beispielseite ist, damit man merkt, dass sich die Seite im Frame auch wirklich verändert.
        --8<--
        <html>
        <body>
        bild1.html
        </body>
        </html>
        -->8--

        Obiges habe ich mit Opera 6.0, IE 6.0 und K-Meleon 0.6 getestet. (K-Meleon ist Gecko-basiert, d.h. auf Netscape und Mozilla dürfte es auch funktionieren.)

        Ich hoffe, dir geholfen zu haben... auch wenn ich dir raten würde, diese seltsame Navigation, welche aus einer Kombination von Popups und Inner Frames besteht, einfacher zu gestalten. :)

        Grüße,
        Mathias