noel: iframes visibility

hallo,

ich habe auf meiner webseite drei iframes, die ich je nach bedarf mit content bediene. dabei sollen nicht benötigte iframes unsichtbar (hidden) erscheinen.

gesteuert wird die seite von einem menü ausserhalb der iframes. ein aufruf lautet dazu bspw:

<a href="stories.htm" target="layer1" onClick="document.all['layer1'].style.visibility='visible';document.all['layer2'].style.visibility='visible';document.all['layer3'].style.visibility='hidden'">stories</a>

layer1 und layer2 sollen hier sichtbar geschaltet werden, layer 3 unsichtbar.

im IE und opera klappt das auch, mozilla nicht. ich denke es liegt hier am MS script all.document... ich weiss allerdings keine lösung.

  1. Hi,

    im IE und opera klappt das auch, mozilla nicht. ich denke es liegt hier am MS script all.document...

    ja, document.all ist nach IE 4-proprietär und für andere Browser alles andere als sinnvoll. Insbesondere *muss* jedes in JavaScript verwendete, nicht zwangsläufig vorhandene Objekt bzw. Methode vor der Verwendung auf Existenz überprüft werden.

    ich weiss allerdings keine lösung.

    http://selfhtml.teamone.de/dhtml/modelle/index.htm

    Cheatah

    --
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
  2. Hi!

    <a href="stories.htm" target="layer1" onClick="document.all['layer1'].style.visibility='visible';document.all['layer2'].style.visibility='visible';document.all['layer3'].style.visibility='hidden'">stories</a>

    ... geht nur in IE und Opera - document.all ist kein Standard Javascript Objekt.

    im IE und opera klappt das auch, mozilla nicht. ich denke es liegt hier am MS script all.document... ich weiss allerdings keine lösung.

    Lösung:
    <script type="text/javascript">
    <!--
    function hideLayer3()
    {
      if( document.all )
      {
        document.all['layer1'].style.visibility='visible';
        document.all['layer2'].style.visibility='visible';
        document.all['layer3'].style.visibility='hidden'
      }
      else if( document.getElementById )
      {
        document.getElementById('layer1').style.visibility='visible';
        document.getElementById('layer2').style.visibility='visible';
        document.getElementById('layer3').style.visibility='hidden'
      }
    }
    //-->
    </script>
    <a href="stories.htm" target="layer1" onclick="hideLayer3()">stories</a>

    Wobei ich mir gerade nicht sicher bin, ob das style.visibility Standard ist - aber du bekommst auf jeden Fall erstmal das gewünschte Objekt mit getElementById.

    Mit freundlichen Grüßen,
    Michael Nagler

    1. Hi,

      if( document.all )
        else if( document.getElementById )

      flashce Reihenfolge. DOM ist Standard, document.all die Ausnahme. Genau wie das Netscape-4-proprietäre DHTML-Modell, welches Du hier ignoriert hast[1].

      Wobei ich mir gerade nicht sicher bin, ob das style.visibility Standard ist

      Standard ist Node.style.nameDerCssEigenschaft.

      Cheatah

      [1] Genau wie <ilayer> als Netscape-4-Alternative zum <iframe> ignoriert wurde.

      --
      X-Will-Answer-Email: No
      X-Please-Search-Archive-First: Absolutely Yes
    2. also ich habe es jetzt mit

      document.getElementById('iframe3').style.visibility='hidden'

      versucht. iframe3 bleibt aber weiterhin sichtbar und verdeckt damit die anderen beiden iframes
      vielleicht liegt es auch daran, dass die iframes sich zum teil überschneiden. iframe3 liegt bsp über den anderen beiden beiden. z-indizes habe ich nicht verteilt, weil es im IE ja auch ohne ging.

      1. hi,

        z-indizes habe ich nicht verteilt, weil es im IE ja auch ohne ging.

        die sind bei iframes sowieso wertlos.
        ein iframe ist nicht einfach ein "normales" html-objekt, dass du vor oder hinter andere html-objekte positionieren kannst.

        gruss,
        wahsaga

        1. habs probiert, bei überlagernden iframes kann man die reihenfolge sehr wohl über z-index steuern.

          1. hi,

            habs probiert, bei überlagernden iframes kann man die reihenfolge sehr wohl über z-index steuern.

            in welchen browsern hast du das getestet ...?

            gruss,
            wahsaga

            1. IE und mozilla!