objekt relative koordinaten in mozilla & co
acid
- javascript
hallo,
ich habe ein web-gis projekt wo sich der nutzer durch das aufziehen eines rechteckes in eine karte hineinzoomen kann.
die sache erfordert die objekt relativen mauskoordinaten weil ich diese in ein koordinatensystem umrechnen muss. im ie funktioniert das auch klasse.
ich verwende dazu die offsetX und offsetY methoden.
das funktioniert allerdings nur im ie und nicht im firefox.
kennt jemand eine möglichkeit für den firefox?
da könnte man am ende auch mit browserweichen arbeiten wenn für beide browser keine gemeinsame möglichkeit gefunden wird.
mfg
Hallo acid,
hier habe ich so etwas mal versucht: http://www.j-berkemeier.de/LogistischeAbbildung.html.
Gruß, Jürgen
also wie ich das auf die stelle sehe ist die für mich wichtige stelle diese hier:
function mouse_pos(evt)
{
var pos = new Object();
if(!evt) { // IE
pos.x=window.event.offsetX; //clientX;
pos.y=window.event.offsetY; //clientY;
}
else if (evt.layerX) { // MOZ
pos.x = evt.layerX; //pageX;
pos.y = evt.layerY; //pageY;
}
else if (evt.offsetX) { // Opera
pos.x = evt.offsetX; //pageX;
pos.y = evt.offsetY; //pageY;
}
return pos;
}
offset funktioniert im firefox nicht. zu layerxy steht im selfhtml das das nur im netscape funzt.
ich probiere es mal.
so:
hab das ausprobiert.
layerx und y liefert bei mir keine objektrelativen! koordinaten.
ich lege zumindest mit document.onclick die aufzurufende funktion fest und das liefert immer die absoluten koordinaten zum bildschirmrand.
wie kann man ein event auf ein objekt festsetzen?
so ala: window.document.getElementById("obj").event.onclick = funktion;
hab das nicht hinbekommen.
layerx und y liefert bei mir keine objektrelativen! koordinaten.
ich lege zumindest mit document.onclick die aufzurufende funktion fest und das liefert immer die absoluten koordinaten zum bildschirmrand.
Layerx/Y funktioniert nur dann so, wenn du den layer positionierst.
Um die Koordintan zu erhalten kannst du auch die Positon des Objektes auf dem der event stattfindet ermitteln.
Das Objekt kannst du so ermitteln:
function event_onclick(e)
{
if(!e) e = window.event;
var targ;
if (e.target) targ = e.target;
else if (e.srcElement) targ = e.srcElement;
if (targ.nodeType == 3) // defeat Safari bug
targ = targ.parentNode;
}
(von: http://www.quirksmode.org/js/events_properties.html)
so ala: window.document.getElementById("obj").event.onclick = funktion;
Ohne event.
Struppi.