![]() |
![]() |
|
![]() |
![]() |
|
Registrieren | Hilfe/Forumregeln | Benutzerliste | Kalender | Suchen | Heutige Beiträge | Alle Foren als gelesen markieren |
Programmierung Rat & Tat für Programmierer |
![]() |
|
Themen-Optionen | Ansicht |
![]() |
#1 | |
Hero
![]() Registriert seit: 26.07.2001
Ort: Wien
Beiträge: 811
|
![]() hallo!
möchte per javascript die aktuelle und absolute position (gemessen am fensterrand des browsers) auslesen. leider habe ich es bisher nur mit mäßigem erfolg zusammengebracht: im FF funktioniert es, im IE leider nicht ![]() aus div. gründen muss es aber im IE funktionieren! wenn ich also Code:
<HTML> <head> <script> function getPageCoords (elementId) { var element; if (document.all) element = document.all[elementId]; else if (document.getElementById) element = document.getElementById(elementId); if (element) { var coords = {x: 0, y: 0}; do { coords.x += element.offsetLeft; coords.y += element.offsetTop; element = element.offsetParent; } while (element) return coords; } else return null; } function alertCoo(el) { var coords = getPageCoords(el); if (coords) alert(coords.x + ':' + coords.y); } </script> </head> <BODY id="documentBody" onload="alertCoo('a3')"> <DIV id="div1"> Placeholder text 1. </DIV> <DIV id="div2" style="position:relative;top:100px;left:100px;"> Placeholder text 2. </DIV> <DIV id="div3" style="position:absolute;top:200px;left:200px;"> <DIV id="div4" style="position:relative;top:100px;left:100px;"> Placeholder text 3. </DIV> </DIV> </BODY> </HTML> der grund ist leider folgender: Zitat:
btw.: eigentlich wollte ich das problem (position-auslesen unter VB.NET mittels eines Webbrowser element lösen, stieß aber auf das selbe problem... vielen dank schon einmal! p.s.: angehängte datei ist zum einfachen ausprobieren...
____________________________________
nobody is perfect |
|
![]() |
![]() |
![]() |
#2 |
Hero
![]() Registriert seit: 26.07.2001
Ort: Wien
Beiträge: 811
|
![]() hehe, war ich mit der lösung schneller, als die 1.antwort
![]() man muss einfach abfragen, ob es die currentStyle eigenschaft gibt... damit kann man relative und demnach doppelte angaben ausschließen, das ganze sieht dann so aus: Code:
<HTML> <head> <script> function getPageCoords (elementId) { var element; if (document.all) element = document.all[elementId]; else if (document.getElementById) element = document.getElementById(elementId); if (element) { var coords = {x: 0, y: 0}; do { if(element.currentStyle) { if(element.currentStyle.position!='relative') { coords.x += element.offsetLeft; coords.y += element.offsetTop; } } else { coords.x += element.offsetLeft; coords.y += element.offsetTop; } element = element.offsetParent; } while (element) return coords; } else return null; } function alertCoo(el) { var coords = getPageCoords(el); if (coords) alert(coords.x + ':' + coords.y); } </script> </head> <BODY id="documentBody" onload="alertCoo('a3')"> <DIV id="div1"> Placeholder text 1. </DIV> <DIV id="div2" style="position:relative;top:100px;left:100px;"> Placeholder text 2. </DIV> <DIV id="div3" style="position:absolute;top:200px;left:200px;"> <DIV id="div4" style="position:relative;top:100px;left:100px;"> Placeholder text 3. </DIV> </DIV> </BODY> </HTML> p.s.: ich habe das ganze jetzt für meine zwecke getestet, sollte irgendjemand drauf kommen, dass es so nicht (immer) funktioniert, bitte nicht steinigen, sondern einfach schreiben, am besten gleich mit lösung ![]() eigentlich hasse ich solche sachen, die für verschiedene browser geschrieben sind und nicht nach standards funktionieren... ![]()
____________________________________
nobody is perfect |
![]() |
![]() |
![]() |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
Themen-Optionen | |
Ansicht | |
|
|