André Laugks: dynamische Positionierung von div's, Probleme im IE4

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

  1. 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

    1. 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

    2. 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

  2. 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

    1. 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

      1. 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

    2. 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