David: Inhalte von ILAYERn neu schreiben...

Hallo Forum,

ich habe diese Frage zwar schon mehrere Male in Zusammenhang mit anderen Fragen gestellt, bekam aber nie eine klärende Antwort. Deswegen stelle ich sie nochmal explizit und hoffe, daß die ganzen Netscape-Fanatiker ;) unter euch eine Antwort darauf wissen.

Zuerst mal der Quelltext:

<!-- ----------- snip ------------- -->

<SCRIPT LANGUAGE="JavaScript">
  var small = true;
  
  function resize() {
    if (document.all) { // IE
      if (small) {
        small = false;
        document.all.hausIE.width = '400';
        document.all.hausIE.height = '300';
        document.all.hausIE.src = 'images/haus.jpg';
      } else {
        small = true;
        document.all.hausIE.width = '200';
        document.all.hausIE.height = '150';
        document.all.hausIE.src = 'images/haus_small.jpg';
      }
    } else if (document.layers) {
      if (small) {
        small = false;
        document.hausNS.document.open();
        document.hausNS.document.write("<A HREF='javascript:resize();'><IMG NAME='hausIE' SRC='images/haus.jpg' WIDTH=400 HEIGHT=300 ALT='Das Firmengebäude / anklicken zum Ändern der Größe' BORDER=0></A>");
        document.hausNS.document.close();
      } else {
        small = true;
        document.hausNS.document.open();
        document.hausNS.document.write("<A HREF='javascript:resize();'><IMG NAME='hausIE' SRC='images/haus_small.jpg' WIDTH=200 HEIGHT=150 ALT='Das Firmengebäude / anklicken zum Ändern der Größe' BORDER=0></A>");
        document.hausNS.document.close();
      }
    }
  }
</SCRIPT>

[...]

<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
  // fuer die korrekte Tabellenhoehe - Netscape reserviert normalerweise Platz fuer Scrollbars
  var height = (document.layers ? window.innerHeight + 4 : "100%");
  document.writeln("<TABLE WIDTH=700 HEIGHT=" + height + " BORDER=0 CELLSPACING=0 CELLPADDING=0 ALIGN='center'>");
</SCRIPT>
<TR>
  [...]
  <TD WIDTH=696 HEIGHT="100%" ALIGN="left" VALIGN="top">
    <TABLE WIDTH="100%" HEIGHT="100%" BORDER=0 CELLSPACING=0 CELLPADDING=5><TR><TD>

<DIV ALIGN="center">
        [...]
<ILAYER ID="hausNS">
        <A HREF="javascript:resize();"><IMG NAME="hausIE" SRC="images/haus_small.jpg" WIDTH=200 HEIGHT=150 ALT="Das Firmengebäude / anklicken zum Ändern der Größe" BORDER="0"></A>
        </ILAYER>
        [...]
      </DIV>
    </TD></TR></TABLE>
  </TD>
  [...]
</TR>
</TABLE>

<!-- ----------- snap ------------- -->

Es wird also ein kleines Bild angezeigt und beim draufklicken soll ein neues, größeres Bild geladen werden. Dummerweise macht Netscape Dinge, die ich nicht nachvollziehen kann. Zum ersten wird nur ein Viertel des Bildes angezeigt (untere rechte Ecke) und unter dem Bild stehender Text wird durch ein weißes Rechteck überdeckt. Zweitens kann ich danach nicht mehr auf das Bild klicken, obwohl per document.write auf ein entsprechender Link geschrieben wird.

Die Seite ist auch zu sehen unter http://www.novaline.de/entwurf

Bitte bitte, helft mir.

MhG,
  David (Mit hoffenden Grüßen ;)

  1. Die Seite ist auch zu sehen unter http://www.novaline.de/entwurf

    Tja, keine Ahnung, was Du da versucht hast zu machen, aber ich komm garnicht dazu mir die Seite anzusehen, weil sie sich pausenlos immer wieder reloaded. (Netscape 4.05)

    Ansonsten denk einfach mal darueber nach alles vielleicht etwas einfacher zu machen und nicht <ilayer> <div> und <table> wild ineinander zu verschachteln. So schwer scheintlich das was Du machen willst naemlich garnicht - halt nicht konsequent umgesetzt.

    Viele Gruesse, Thomas Hieck

  2. Hallo!

    ich habe diese Frage zwar schon mehrere Male in Zusammenhang mit anderen Fragen gestellt, bekam aber nie eine klärende Antwort. Deswegen stelle ich sie nochmal explizit und hoffe, daß die ganzen Netscape-Fanatiker ;) unter euch eine Antwort darauf wissen.

    Schaue mal hier rein. Das sollte Dir weiterhelfen. Thomas hat natürlich recht. Dei den ganzen Tabellen, Layers und div's muß Netscape durcheinander kommen. Aber vielleicht ist ja Netscape auch nicht schuld, sondern Fehler in Deinem Scriptaufbau. Wenn man auf das Bild klickt, wird das ja nicht in der Mitte angezeigt, sondern wird links ausgerichtet. Der Text wird auch von etwas überdeckt.

    Schaue mal auf diesen Seiten:

    <../../tfca.htm>
    http://www.netcologne.de/~nc-laugksan/simpson/simpsonslide.htm

    mfg, André

  3. Hi David
    Ich wuerde dein Problem einfach etwas anders loesen.
    Ich glaube, daß selbst wenn es dir gelingen wuerde die Bilder richtig auszutauschen, der Netscape dein groesseres Bild nicht vollstaendig anzeigen wuerde, weil er sich strickt weigert die Fenstergroesse dynamisch anzupassen. (Das heisst, dass in dem Fall nur der obere Teil des Bildes angezeigt wuerde)
    Aber nun zu meinem Loesungsvorschlag:
    Beide Bilder als absolut positionierte div's definieren und je nach Bedarf in den Vordergrund stellen.
    <html>
    <head>
    <script language="JavaScript">
    <!--
    function Bildwechsel(BildNr)
    {
    if (BildNr==1){
    Bildweg="Bild2"; Bildhin="Bild1";}
    else{
    Bildweg="Bild1"; Bildhin="Bild2";}
    if (document.layers){
    document.layers[Bildweg].visibility="hide";
    document.layers[Bildhin].visibility="show";}
    else if (document.all){
    document.all.Bildweg.style.visibility="hidden";
    document.all.Bildhin.style.visibility="visible";
    }}
    //-->
    </script>
    </head>
    <body>
    <div id="Bild1"  style="position:absolute; top:160px; left:130px; width:200px; height:150px; visibility:visible;"><a href="javascript:Bildwechsel(2)">
    <IMG NAME="hausIE" SRC="images/haus_small.jpg" WIDTH=200
    HEIGHT=150 ALT="Das Firmengebäude / anklicken zum Ändern der Größe" BORDER="0"></a></div>
    <div id="Bild2"  style="position:absolute; top:160px; left:130px; width:400px; height:300px; visibility:visible;"><a href="javascript:Bildwechsel(1)">
    <IMG NAME="hausIE" SRC="images/haus.jpg" WIDTH=400
    HEIGHT=300 ALT="Das Firmengebäude / anklicken zum Ändern der Größe" BORDER="0"></a></div>
    </body>
    </html>

    Ich hoffe das ist eine akzeptable Loesung.
    Holger

    PS: Die Position der Divs musst du natuerlich noch an deine Wuensche anpassen