dynamische Positionierung von div's, Probleme im IE4
André Laugks
- dhtml
0 Calocybe0 Jens Menke
Hallo alle zusammen!
Das aufgeführte Script hat die Aufgabe, div's (Tooltips) dynamisch, je nach Browserfenstergöße, zu positionieren. Die Tabelle, in dem sich die Links befinden, sitzt mittig und ist 700 Pixel breit. Das Problem ist, das die div's im IE 4.01SP1 nicht richtig positioniert werden. Die div's sitzen immer ca. 500 Pixel nach rechts versetzt.
Im IE 5.0, NN4.5 und NN4.03 werden die div's richtig gesetzt.
((breiteges/2)-350)+y;
Breite des Browserfensters / 2 - 350Pixel. Mit dieser Formel habe ich den Anfangspunkt, links an der Tabelle. Mit onMouseOver="an('link2', 640)" übergebe ich auch die Pixel, dann also nochmal + 640 Pixel. Ich kann keine Minuswerte übergeben, weil sonst NN4.03 eine JS-Fehlermeldung angibt, deshalb muß ich den linken Anfangspunkt der tabelle berechnen.
Hier eine Seite mit dem Script: http://www.netcologne.de/~nc-laugksan/forum/dhtml2.htm
Hier das gesamte Script:
<script language="JavaScript">
<!--
function an(tooltip, y) {
if(document.layers)
{
if(self.innerWidth <= 710)
{
document.layers[tooltip].left=y;
document.layers[tooltip].visibility="show";
}
else
{
breiteges=self.innerWidth;
document.layers[tooltip].left=((breiteges/2)-350)+y;
document.layers[tooltip].visibility="show";
}
}
if(document.all)
{
if(document.body.clientWidth <= 710)
{
document.all[tooltip].style.left=y;
document.all[tooltip].style.visibility="visible";
}
else
{
breiteges=document.body.clientWidth;
document.all[tooltip].style.left = ((breiteges/2)-350)+y;
document.all[tooltip].style.visibility="visible";
}
}
}
function aus(tooltip)
{
if(document.layers)
{
document[tooltip].visibility="hide";
}
if(document.all)
{
document.all[tooltip].style.visibility="hidden";
}
}
// -->
</script>
<a href="http://www.hallo.de" onMouseOver="an('link1', 20)" onMouseOut="aus('link1')">Link1</a><br>
<a href="http://www.hallo.de" onMouseOver="an('link2', 640)" onMouseOut="aus('link2')">Link2</a>
Mit freundlichen Grüßen
André Laugks
Hallo Bad!
Zu Deinem Problem weiss ich zwar nix, aber mich wuerde mal interessieren, was denn der Herr Netscape bei negativem y fuer eine Fehlermeldung bringt. Kann da naemlich nix schlimmes oder verdaechtiges bei dem Script finden.
Calocybe
Zu Deinem Problem weiss ich zwar nix, aber mich wuerde mal interessieren, was denn der Herr Netscape bei negativem y fuer eine Fehlermeldung bringt. Kann da naemlich nix schlimmes oder verdaechtiges bei dem Script finden.
Da hat Netscape aussnahmsweise keine Problem mit :)
gruss
Jens
Hallo Calocybe!
Zu Deinem Problem weiss ich zwar nix, aber mich wuerde mal interessieren, was denn der Herr Netscape bei negativem y fuer eine Fehlermeldung bringt. Kann da naemlich nix schlimmes oder verdaechtiges bei dem Script finden.
So steht es im jetzigen Script:
die Formel: ((breiteges/2)-350)+y
<a href="http://www.hallo.de" onMouseOver="an('link1', 20)" onMouseOut="aus('link1')">Link1</a><br>
<a href="http://www.hallo.de" onMouseOver="an('link2', 640)" onMouseOut="aus('link2')">Link2</a>
Wenn ich es jetzt so schreiben würde, die Mitte als mein Anfangspunkt nehme
die Formel: (breiteges/2)+y
<a href="http://www.hallo.de" onMouseOver="an('link1', -330)" onMouseOut="aus('link1')">Link1</a><br>
<a href="http://www.hallo.de" onMouseOver="an('link2', 290)" onMouseOut="aus('link2')">Link2</a>
Hier würde Netscape 4.03, in einer JS-Fehlermeldung, das Minus bei -330 als Fehler anmahnen.
Vielleicht habe ich einen Fehler beim notieren die Angaben gemacht.....!
Mit freundlichen Grüßen
André Laugks
Hi..
das Problem ist vermutlich das IE4 im gegensatz zum
IE5 im head document.body.clientWidth noch nicht
kennt.
Versuch doch mal das Script in den Body zu verlegen.
gruss
Jens
Hallo Jens!
das Problem ist vermutlich das IE4 im gegensatz zum
IE5 im head document.body.clientWidth noch nicht
kennt.
Versuch doch mal das Script in den Body zu verlegen.
Das habe ich auch schon probiert. Es hat aber auch keine Verbesserung gebracht. Vielleicht nehme ich mal das Script auseinander. Also das verbergen und anzeigen der Tooltips in den Header und denn Teil zum positionieren in den body. Was mich wundert, das der IE Mucken macht, der ja mit DHTMl keine Probleme hat. Naja, wenn er natürlich document.body.clientWidth nicht kennt :-( ! Vielleicht baue ich noch eine Abfrage für den IE 4.0 ein und mal in den Dokus schauen.
Mit freundlichen Grüßen
André Laugks
Naja, wenn er natürlich document.body.clientWidth nicht kennt :-( ! Vielleicht baue ich noch eine Abfrage für den IE 4.0 ein und mal in den Dokus schauen.
Doch.. er kennt es schon.. aber erst sobald er sich
im Body befindet.. da ich fast nur noch IE5 benutze
bin ich da halt auh schon mal böse drauf reingefallen.:)
gruss
Jens
das Problem ist vermutlich das IE4 im gegensatz zum
IE5 im head document.body.clientWidth noch nicht
kennt.
Versuch doch mal das Script in den Body zu verlegen.
Daran kann es liegen, aber die Loesung sollte sein, dass man dem <body> einfach ein ID gibt, wie man das bei jedem anderen Befehl auch tut. Dann kann man naemlcih ohne Probs drauf zugreifen.
Viele Gruesse, Thomas Hieck