Tobias Müller: IE6 ignoriert im Standard-Modus document.body.scrollLeft u. -Top

Hallo Ihr,

Ich habe folgende Funktion, um die aktuelle Mausposition zu ermitteln:
function tmMausPosition(e) { // Die Maus-Position ermitteln
 if (isDOM)
 {
  if (isIE5)
  {
   xPosMaus = window.event.clientX + document.body.scrollLeft;
   yPosMaus = window.event.clientY + document.body.scrollTop;
  }
  else
  {
   xPosMaus = e.clientX + window.pageXOffset;
   yPosMaus = e.clientY + window.pageYOffset;
  }
 }
}

Alles wunderbar in Opera, den Geckos und IE 5 bzw. 5.5. IE 6 macht im Quirks-Modus auch keine Probleme, befindet er sich allerdings im Standard-Modus, dann ignoriert er schlichtweg document.body.scrollLeft und document.body.scrollTop und gibt folglich, wenn das Dokument gescrollt wurde, nicht mehr die korrekte Position der Maus innherhalb des Dokuments zurück.

Gibt es Abhilfe für dieses Phänomen oder bleibt mir nur der Quirks-Modus für den IE6 übrig?

Nächtliche Grüße aus Köln

Mülli

--
Viva Colonia!
  1. Hi,

    hast Du denn schonmal probiert, ob der IE6 im standards-compliant mode die DOM-Syntax versteht?

    freundliche Grüße
    Ingo

    1. Hallo,

      hast Du denn schonmal probiert, ob der IE6 im standards-compliant mode die DOM-Syntax versteht?

      Ja hatte ich ausprobiert, versteht er aber nicht. Die Lösung siehe die Antworten von Maxx und Elya.

      MfG Mülli

      --
      Viva Colonia!
  2. Hallo Tobias,

    xPosMaus = window.event.clientX + document.body.scrollLeft;
       yPosMaus = window.event.clientY + document.body.scrollTop;

    IE 6 macht im Quirks-Modus auch keine Probleme, befindet er sich allerdings im Standard-Modus, dann ignoriert er schlichtweg document.body.scrollLeft und document.body.scrollTop

    im Standard ("CSS1Compat" Mode) Modus verbirgt sich dies Eigenschaft unter document.documentElement.scrollTop.

    Den Modus erfährst du mit

    if(document.compatMode)
      alert(document.compatMode)

    Grüße,

    Jochen

    1. Hallo,

      im Standard ("CSS1Compat" Mode) Modus verbirgt sich dies Eigenschaft unter document.documentElement.scrollTop.

      Etwas Lektüre dazu gibt es hier: http://www.evolt.org/article/document_body_doctype_switching_and_more/17/30655/

      Gruß aus Köln-Ehrenfeld,

      Elya

      --
      "Alle mal an die Nase fassen, und zwar an die eigene": </archiv/2003/9/57903/#m324482>
      _____________
      elyas virtuelle Altbauwohnung: http://www.visuelya.de
      1. Hallo,

        im Standard ("CSS1Compat" Mode) Modus verbirgt sich dies Eigenschaft unter document.documentElement.scrollTop.

        Etwas Lektüre dazu gibt es hier: http://www.evolt.org/article/document_body_doctype_switching_and_more/17/30655/

        Das ist die Lösung. :) Vielen Dank euch beiden!

        MfG Mülli

        --
        Viva Colonia!
  3. Hallo,

    Ich habe folgende Funktion, um die aktuelle Mausposition zu ermitteln:
    function tmMausPosition(e) { // Die Maus-Position ermitteln
     if (isDOM)
     {
      if (isIE5)
      {
       xPosMaus = window.event.clientX + document.body.scrollLeft;
       yPosMaus = window.event.clientY + document.body.scrollTop;
      }
      else
      {
       xPosMaus = e.clientX + window.pageXOffset;
       yPosMaus = e.clientY + window.pageYOffset;
      }
     }
    }

    Im Opera und Gecko kannst du übrigens direkt mit pageX bzw pageY arbeiten. Siehe Archiv, etwa </archiv/2004/3/74685/#m430305>. Dort hättest du auch die Lösung für dein IE-Problem gefunden.

    Mathias