Absolute Position
Thomas
- javascript
Hallo,
ich habe ein Problem. Ich brauche die absolute Position auf einem Dokument.
Ich habe 2 Möglichkeiten. Entweder die Position des Mauszeigers oder die Position eines Elementes.
Wichtig dabei ist das es die Position absolut zum gesamten Dokument ist und nicht nur von aktuell angezeigetem Bildschirm.
Ich will anschließend ein Layer genau an diese Position setzen. Bis her hab ich es nur geschaft die relative Position des Sceens herauszufinden. das passt wiederrum nicht mit der position des Layers zusammen..... da diese position absolut vom dokument und nicht vom screen ausgeht.
PS: "position:relative" funktioniert nicht...
Hallo,
ich habe ein Problem. Ich brauche die absolute Position auf einem Dokument.
mir ist noch nicht ganz klar geworden worum es dir geht.
Vielleicht suchst du etwas wie getComputedStyle?
Hast du -nicht zu umfangreichen :)- Beispielcode?
Grüsse
Cyx23
Hi,
Ich habe 2 Möglichkeiten. Entweder die Position des Mauszeigers ...
Hier gibts ein Beispiel fuer die Mausposition
Wichtig dabei ist das es die Position absolut zum gesamten Dokument ist und nicht nur von aktuell angezeigetem Bildschirm.
Was ist der aktuell angezeigte Bildschirm? Sprichst Du von der Scrollposition?
Bis her hab ich es nur geschaft die relative Position des Sceens herauszufinden.
Die relative Position meines Screens ist etwa 50 cm vor meiner Nase...
das passt wiederrum nicht mit der position des Layers zusammen..... da diese position absolut vom dokument und nicht vom screen ausgeht.
eine relative positionierung orientiert sich am Fluss der Html-Elemente. Eine absolute Positionierung hingegen an der Position eines ebenfalls _positionierten_ Elternelements oder,falls nicht vorhanden, des bodys.
PS: "position:relative" funktioniert nicht...
doch, gut sogar.
Gruesse, Joachim
Ich habe 2 Möglichkeiten. Entweder die Position des Mauszeigers ...
Hier gibts ein Beispiel fuer die Mausposition
Hier verfällst du auf eine Unsitte die leider häufig benutzt wird.
document.all == IE
Nur das stimmt nicht, das Opera das schon länger kann ist klar, aber auch Mozilla ab Version ? kennt document.all
Ich weiß nicht, ob der das M$ DOM nachbaut, aber es ist sinvolller das zu prüfen, was man verwenden möchte.
also z.b. hier
// find out if ie runs in quirks mode
//
var docEl = (
document.documentElement &&
document.all &&
typeof document.compatMode != "undefined" &&
document.compatMode != "BackCompat"
)? "documentElement" : "body";
// sinnvoller:
var docEl = (
typeof document.compatMode != "undefined" &&
document.compatMode != "BackCompat"
)? "documentElement" : "body";
// position where mousemove fired
//
var xPos = document.captureEvents? e.pageX : window.event.x;
var yPos = document.captureEvents? e.pageY : window.event.y;
// Besser:
var xPos = e ? e.pageX : window.event.x;
var yPos = e ? e.pageY : window.event.y;
// und hier:
// for ie add scroll position
//
if (document[docEl]) {
xPos += document[docEl].scrollTop;
yPos += document[docEl].scrollTop;
}
Struppi.
Hi,
Hier verfällst du auf eine Unsitte die leider häufig benutzt wird.
document.all == IE
Du hast Recht, ich bin verbluefft. Manche Zoepfe sind so alt, das man vergisst sie abzuschneiden.
Gruesse, Joachim
Hi,
Nur das stimmt nicht, das Opera das schon länger kann ist klar, aber auch Mozilla ab Version ? kennt document.all
ich habe jetzt nochmals genauer getestet. Mozilla kennt zwar document.all, aber nur wenn er im Quirks Modus laeuft. Das macht diese Abfrage in der Tat noch unzuverlaessiger.
das ist aber nicht sinnvoll...
if (document[docEl]) {
xPos += document[docEl].scrollTop;
yPos += document[docEl].scrollTop;
}
...denn Moz kennt document.documentElement.scrollTop, addiert also die Scrollposition und errechnet ein falsches Ergebniss. Da muss ich mir was anderes ausdenken...
Gruesse, Joachim
das ist aber nicht sinnvoll...
if (document[docEl]) {
xPos += document[docEl].scrollTop;
yPos += document[docEl].scrollTop;
}
...denn Moz kennt document.documentElement.scrollTop, addiert also die Scrollposition und errechnet ein falsches Ergebniss. Da muss ich mir was anderes ausdenken...
Hmmm, bei mir nicht http://javascript.jstruebig.de/lib/mouse.html
Allerdings prüfe ich nur so:
function getBody(w)
{
return (w.document.compatMode && w.document.compatMode == "CSS1Compat") ?
w.document.documentElement : w.document.body || null;
}
Struppi.
Hi,
Hmmm, bei mir nicht http://javascript.jstruebig.de/lib/mouse.html
ich denke das macht den kleinen Unterschied:
pos.left = evt.clientX;
pos.top = evt.clientY;
bzw:
var xPos = e? e.pageX : window.event.x;
var yPos = e? e.pageY : window.event.y;
e.pageX bekommt bei Dir nur NC 4x zu sehen. Muss mal recherchieren, ob das moeglicherweise veraltet ist...
Mit document.all das habe ich wirklich verpennt, fuer die Faelle, wo ich es benoetige, nicht aber auf die eigentliche Methode testen kann, muss ich mir was ausdenken. captureEvents ist ganz brauchbar, das kennt auch Opera. Aber ich muss auch noch am PC testen...
Gruesse, Joachim
Hallo Thomas,
Beispiele und Infos, wie Du an die Mauskoordinaten kommst, findest Du hier:
http://www.jstruebig.de/web/javascript/exp/mouse-test.html
http://www.j-berkemeier.de/MausOmeter.html
Bei der unteren Seite wird per Mausklick an der Mausposition ein kleines Fenster mit den Mauskoordinaten eingeblendet.
Gruß, Jürgen