Objektposition ermitteln...

tomate

Erfahrenes Mitglied
Hallo zusammen,

hiermit ermittle ich die Position eines div-Container's:

Code:
x = (document.all) ? window.event.x + document.getElementById('leftid').scrollLeft : e.pageX;
    y = (document.all) ? window.event.y + document.getElementById('leftid').scrollTop  : e.pageY;

Funktioniert im IE soweit gut.
Der Firefox speichert wie man es von pageX erwarten kann, die Pixel in Bezug auf die linke obere Ecke des Dokumentes.

Da ich jedoch einen scrolbaren div-Container habe, bräuchte ich die linke obere Ecke des Dokumentes in Bezug auf den scrollbaren Container.

Hat das jetzt jemand verstanden...?
Wenn nicht, bitte kurz nachfragen.

Viele Grüße!
Tomate
 
Hi,

so wirklich verstanden habe ich dich nicht. Aber ich habe ein Script für dich, das diverse Grössen berechnet und ausgibt - vielleicht ist das richtige dabei.
Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>www.tutorials.de</title>
<meta name="author" content="Quaese" />
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<style type="text/css">
<!--
html{
  height: 100%;
}
body{
  height: 120%;
}

#left_id{
  cursor: default;
  overflow: auto;
  width: 200px;
  height: 200px;
  border: 1px solid #000;
  margin: 56px 0 0 50px;
}
-->
</style>
<script type="text/javascript">
  <!--
function myHandler(objEvt){
  // Variablen
  var objBody = null;
  var objBase = document.getElementById("left_id");  // Umschliessendes Element
  var intOffY = objBase.offsetTop;                   // Erstes Offset
  var objPar = objBase.offsetParent;                 // Erstes übergeordnetes Offset-Element

  // Passendes Body-Objekt ermitteln
  if(document.all && !window.opera)
    objBody =(window.document.compatMode == "CSS1Compat")? window.document.documentElement : window.document.body || null;
  else
    objBody = document.documentElement;

  // Absolutes Offset des umschliessenden DIV-Elements ermitteln
  while(objPar){
    intOffY += objPar.offsetTop;
    objPar = objPar.offsetParent;
  }

  // Mouseoffset im Dokument (y-Koordinate)
  var intMouseY = (window.event)? window.event.y : objEvt.clientY;
  // Scrollhöhe des Dokuments (y-Koordinate)
  var intScrollY = (window.pageYOffset)? window.pageYOffset : ((typeof objBody.scrollTop == "number")? objBody.scrollTop : 0);

  // MausOffset im DIV
  var intOffDiv  = (intMouseY+intScrollY-intOffY);
  // MausOffset im Dokument (Scrollhöhe + ViewportOffset)
  var intOffDoc  = intMouseY+intScrollY;
  // MausOffset im Viewport
  var intOffView = intMouseY;

  // Ausgabe verschiedener Grössen
  alert("Offset im Dokument (y, DIV): " + intOffY + "\
  \nScrollhöhe (y, DIV): " + objBase.scrollTop + "\
  \nScrollhöhe (y, BODY): " + intScrollY + "\
  \nMauskoordinate (y, im Viewport): " + intOffView + "\
  \nMauskoordinate (y, im Dokument): " + intOffDoc + "\
  \nMauskoordinate (y, DIV): " + intOffDiv);
}
 //-->
</script>
</head>
<body>
<div id="left_id" onclick="myHandler(event);">
  <div style="height: 500px;">Inhalt</div>
</div>
</body>
</html>

Ciao
Quaese
 
Besten Dank erst mal für Deine Hilfe.

mit e.layerX statt e.pageX funktioniert es nun im FF.
Dafür geht es im Opera nicht.

Laut selfhtml speichert layerX die Mauszeigerposition relativ zur linken Ecke eines Layer-Bereiches.

pageX speichert jedoch die Mauszeigerposition relativ zur oberen linke Ecke des Dokumentes.

Ich suche also sowas wie layerX aber ebend kompatibel mit den gängigen Browsern außer dem IE.

Mal guggen, ob das Dein Script kann...

Viele Grüße, Tomate
 

Neue Beiträge

Zurück