maus position
Gawin
- javascript
Hi mein Problem ist das ich die mausposition relativ zum layer habe möchte aber er spuckt mir immer nur die mausposition vom gesamten Dokument an hoffe es kann mir wer helfen hier meine Funktion zum auslesen:
mouse_pos = function(e, if_layer) {
if(!e) e = window.event;
var body = (window.document.compatMode && window.document.compatMode == "CSS1Compat") ?
window.document.documentElement : window.document.body;
pos={};
if(!if_layer){
try{
pos.Y = e.pageY;
pos.X = e.pageX;
}catch(e){
pos.Y = e.clientY + body.scrollTop - body.clientTop;
pos.X = e.clientX + body.scrollTop - body.clientTop;
}
}else if(if_layer){
try{
pos.Y = e.layerY;
pos.X = e.layerX;
}catch(e){
pos.Y = e.offsetY;
pos.X = e.offsetX;
}
}
return pos;
}
und nun zu meinem Aufruf der erfolgt innerhalb einer klasse mit dem namen goom und _goom ist die variable für den selbstverweis
function goom_mouse_coords_obj(e){
var coords = mouse_pos(e, true);
_goom.mouse_pos_obj_x = coords.X;
_goom.mouse_pos_obj_y = coords.Y;
}
// Ausschnitt aus der schleife wo es aufgerufen wird
this.drag_points[i].onmousedown = goom_mouse_coords_obj;
this.drag_points[i].onmouseup = function(){
_goom.drop(this);
alert(_goom.mouse_pos_obj_x+" : "+_goom.mouse_pos_obj_y);
_goom.mouse_pos_obj_x = null;
_goom.mouse_pos_obj_y = null;
alert(_goom.mouse_pos_obj_x+" : "+_goom.mouse_pos_obj_y);
}
er spring in der mouse_pos Funktion auf jedenfall zum layerX Aufruf hab ich über nen alert ausprobiert und bevor ichs vergess das Objekt auf dem das mousedown gelegt ist ist ein Bild und hat den style befehl position:absolute bzw position:relative jenachdem wie ichs gerade brauch.
hoffe das war alles was an Infos benötigt wird und das mir jemand helfen kann
mfg gawin
Liebe(r) Gawin,
Hi mein Problem ist das ich die mausposition relativ zum layer habe möchte
dann musst Du nur die Koordinaten des Layers von denen der Maus abziehen. Dann kannst Du prüfen, ob sich die Maus innerhalb des Layers befindet.
Sollte das absolut positionierte Bild in einem Vorfahrenelement liegen, dessen Position nicht static ist, dann musst Du noch eine zusätzliche Korrektur an Deinen Bildkoordinaten(!) vornehmen, denn dann musst Du des Bildes Elternknoten auf offsetParent hin überprüfen und falls dieses nicht <body> ist, die Koordinaten entsprechend anpassen.
BTW: Wozu prüfst Du auf e.layerX bzw. e.layerY? Mittlerweile sollte diese Netscape-Syntax wirklich ins Museum!
Liebe Grüße,
Felix Riesterer.
dann musst Du nur die Koordinaten des Layers von denen der Maus abziehen. Dann kannst Du prüfen, ob sich die Maus innerhalb des Layers befindet.
das problem ist nur das nicht immer koordinaten angegeben sind deshalb kann ichs nicht abziehen oder kann man layerpositionen abgreifen? und wenn ich nur wissen wollte ob die maus im bild is würd ich mouseover nehmen ich brauch aber die korrekte position möchte das bild ziehen und es soll genauso gezogen werden wie drauf geklickt wurde wie mans halt gewohnt ist
Sollte das absolut positionierte Bild in einem Vorfahrenelement liegen, dessen Position nicht static ist, dann musst Du noch eine zusätzliche Korrektur an Deinen Bildkoordinaten(!) vornehmen, denn dann musst Du des Bildes Elternknoten auf offsetParent hin überprüfen und falls dieses nicht <body> ist, die Koordinaten entsprechend anpassen.
was muss man denn anpassen wenn der elternknoten <body> ist?
BTW: Wozu prüfst Du auf e.layerX bzw. e.layerY? Mittlerweile sollte diese Netscape-Syntax wirklich ins Museum!
wie soll ichs sonst machen -.-*
Om nah hoo pez nyeetz, Gawin!
möchte das bild ziehen
<del>zieh</del><ins>guck</ins>st du
Matthias
<del>zieh</del><ins>guck</ins>st du
an sich sehr hilfreich kann jetzt layer verschieben aber versuch damit mal nen bild zu ziehen der browser dennkt dann nämlich das ich das bild zum kopieren verschieben möchte und fällt total aus der routine was kann man da denn machen?
gruss Gawin
Om nah hoo pez nyeetz, Gawin!
aber versuch damit mal nen bild zu ziehen der browser dennkt dann nämlich das ich das bild zum kopieren verschieben möchte und fällt total aus der routine was kann man da denn machen?
Ich kann deine Beschreibung nicht nachvollziehen, zeig doch mal die Seite.
Matthias
Ich kann deine Beschreibung nicht nachvollziehen, zeig doch mal die Seite.
nimm das beispiel wo du mir den link zu gegeben hast und nimm statt div mal nen img oder mach den div leer style mäßig alles leer und pack nen img rein dann siehste es
Ok wenn ich das Bild als Background nehme klappt alles anstandslos.
Nicht das eleganteste aber es geht.
Hallo,
<del>zieh</del><ins>guck</ins>st du
an sich sehr hilfreich kann jetzt layer verschieben aber versuch damit mal nen bild zu ziehen der browser dennkt dann nämlich das ich das bild zum kopieren verschieben möchte und fällt total aus der routine was kann man da denn machen?
ist dir schon mal aufgefallen, dass ein paar geschickt plazierte Kommas und Punkte Gold wert sein können? Damit wird sogar aus deiner zunächst unverständlichen Textwurst etwas Sinnvolles.
Übrigens heißt es DAS Bild[*], nicht DER Bild. Also auch in der salopp verkürzten Form nicht "nen", sondern höchstens "n".
Ciao,
Martin
[*] meinetwegen noch DIE Bild, aber das ist wieder eine andere Geschichte ...
Das mit den Kommata (und nicht Kommas) und Punkten versteh ich, aber da ich halt leichtes Platt mit in meiner Aussprache habe sage ich "nen Bild" und dat nimmt mir kener ;)
Hallo,
Das mit den Kommata (und nicht Kommas)
das ist mittlerweile Geschmackssache. Der ursprüngliche, konservative Plural heißt natürlich "Kommata", das stimmt schon. Aber "Kommas" gilt seit ein paar Jahren auch als richtig.
aber da ich halt leichtes Platt mit in meiner Aussprache habe sage ich "nen Bild" und dat nimmt mir kener ;)
Seltsame Sprache ...
Aber die Schwaben um mich herum sind ja auch nicht besser - die sagen "das Teller", "der Butter" oder "das Tunnel" mit Betonung auf der letzten Silbe.
Ciao,
Martin
Nachsatz is mir gerade noch eingefallen, Du sagst doch auch "Da ist etwas auf dem Bild." und nicht "Da ist etwas auf das Bild" oder? ;)
Hi,
Nachsatz is mir gerade noch eingefallen, Du sagst doch auch "Da ist etwas auf dem Bild." und nicht "Da ist etwas auf das Bild" oder? ;)
ja, aber du verwechselst den in diesem Nachsatz verwendeten Dativ mit dem vorher verwendeten Akkusativ. :-)
Ciao,
Martin
ja, aber du verwechselst den in diesem Nachsatz verwendeten Dativ mit dem vorher verwendeten Akkusativ. :-)
Jetzt gehts hier aber los wa xD
Lieber Gawin,
aber versuch damit mal nen bild zu ziehen der browser dennkt dann nämlich das ich das bild zum kopieren verschieben möchte und fällt total aus der routine was kann man da denn machen?
also für IE mache ich das so:
antiMarkierungsModusFuerIE = function (schalter) {
if (schalter) {
// Anti-Markierungs-Effekt für IE einschalten
Quiz.oldDocOnSelectStart = document.onselectstart;
Quiz.oldDocOnDragStart = document.ondragstart;
document.onselectstart = function () { return false; };
document.ondragstart = function () { return false; };
} else {
// Anti-Markier-Effekt für IE beenden
if (Quiz.oldDocOnSelectStart || typeof(document.onselectstart) == "function")
document.onselectstart = Quiz.oldDocOnSelectStart;
if (Quiz.oldDocOnDragStart || typeof(document.ondragstart) == "function")
document.ondragstart = Quiz.oldDocOnDragStart;
}
};
Der Code ist aus meinem Quiz-Framework. Anscheinend musste ich für Webkit oder FF keinerlei Anpassungen vornehmen. Das kann aber auch daran liegen, dass Bilder immer in einem Elternelement liegen, welches "bewegt" wird, sodass das Bild selbst innerhalb dieses Elements eben nicht gezogen wird (und damit wohl das Bilderdragging nicht auslöst).
Liebe Grüße,
Felix Riesterer.