iframes visibility
noel
- dhtml
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.
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
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
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.
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.
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
habs probiert, bei überlagernden iframes kann man die reihenfolge sehr wohl über z-index steuern.
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
IE und mozilla!