Prüfen ob Maustaste gedrückt ist

SAMariter

Mitglied
Hallo, ich bins mal wieder.

Ich möchte eine Funktion mit einem Event-Handler (onmousemove) starten. Diese Funktion soll aber nur dann ausgeführt werden, wenn gleichzeitig die linke Maustaste gedrückt wird. Somit müßte ich in meiner aufgerufenen Funktion als allererstes prüfen ob die Taste gedrückt ist. Geht das irgendwie**** Also nochmal zum verdeutlichen: ich brauche hier nicht den Event-Handler onmousedown sondern einen Befehl zum prüfen.

Danke.

CU Uli
 
Oh, super, danke.

Ich habe das jetzt schon ein bissen anders gelößt, aber ich werde das auf jeden Fall noch mit "deinen" Methoden ausprobieren.

Nun aber noch ein weiterführendes Problem:

Ich habe diese Funktion mit dem onmousemove. In dieser Funktion soll immer die aktuelle Position des Mauszeigers ermittelt werden. Ich sitze nun bald schon ne stunde an diesem banalen problem, aber ich finde einfach keine Lösung...

Ob relativ zum Objekt, dem Anzeigebereich oder des Browsers, ist mir eigentlich relativ egal, nur in allen Browsern sollte es funktionieren.

CU Uli
 
Nicht nur überflogen, sondern so ziemlich alles schon ausprobiert damit. Es will einfach nichts klappen. Ich glaube das ist einfach nicht die richtige Uhrzeit zum Programmieren.

ich habe in meiner aufgerufenen Funktion folgendes geschrieben.

alert(window.event.pageX);

das würde für mich sinn machen. Aber da tut sich rein garnichts. *grummel*

CU
 
Ich glaube jetzt habe ichs:

zum rufen im DIV-Tag:
onmousemove="rotationstart(event)"

und die Funktion:
function rotationstart(element) {
alert(element.pageX);
}

Das scheint zu funktionieren.

CU
 
Wirklich alles ausprobiert?

Wenn ich dich richtig versteh, wandelst du einfach den anhängigen Beispielcode für screenX, screenY in clientX, clientY um :)

HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<title>Test</title>
<script type="text/javascript">
function Mausklick (Ereignis) {
  if (!Ereignis)
    Ereignis = window.event;
  alert("x-Wert: " + Ereignis.clientX + "px" + " / y-Wert: " + Ereignis.clientY + "px");
}

document.onclick = Mausklick;
</script>
</head><body>
<p>Klicken Sie irgendwo ins Dokument, um die Position auszugeben.</p>
</body>
</html>
bzw. mit dem onmousemove-Event:

HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<title>Test</title>
<script type="text/javascript">
function Mausbewegung (Ereignis) {
  if (!Ereignis)
    Ereignis = window.event;
  alert("x-Wert: " + Ereignis.clientX + "px" + " / y-Wert: " + Ereignis.clientY + "px");
}

document.onmousemove = Mausbewegung;
</script>
</head><body>
<p>Bewegen Sie die Maus im Dokument, um die Position auszugeben.</p>
</body>
</html>
 
Zuletzt bearbeitet:
Hi,

ganz so trivial ist das Problem leider nicht. Du musst hier zum einen unterscheiden, welchen Browser du verwendest (IE und clientx/clientY, Nicht-IE pageX/pageY). Bei IEs musst du zusätzlich beachten, die gescrollten Bereiche (scrollLeft/scrollTop) zu addieren.

Weiterhin musst du noch testen, in welchem Modus sich ein IE befindet, um das richtige body-Objekt zu verwenden.

Beispiel:
Code:
<html>
<head>
<title>Test</title>
<meta name="author" content="Quaese">
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<script type="text/javascript">
  <!--
function hMouseMove(objEvt){
  var objMouse = {};
  objMouse.x = (window.event)? (window.event.clientX+objBody.scrollLeft) : objEvt.pageX;
  objMouse.y = (window.event)? (window.event.clientY+objBody.scrollTop) : objEvt.pageY;

  document.getElementById("out_id").innerHTML = "(" + objMouse.x + ", " + objMouse.y + ")";
}

window.onload = function(){
  // 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;

  document.onmousemove = function(evt){
    hMouseMove(evt);
  }
}
 //-->
</script>
</head>
<body>
  <div id="out_id"></div>
</body>
</html>
Ciao
Quaese
 
danke für eure antworten. Nur muß ich euch leider sagen, das genau das was Ihr da geschrieben habt nicht funktioniert. Die beispiele habe ich im Internet zu hauf gefunden. die nehmen alle folgendes als Auslöser für die Positionsermittlung:

document.onmousemove = Mausbewegung;

Das problem scheint jedoch zu sein, das das nicht gleichzeitig mit meinem Objekt angehängten Event-Handler onmousemove funktioniert. Da hat sich die gemessene Position des Mauszeigers nicht mehr verändert solnage ich in dem Objekt rumgefahren bin. Bin ich aus dem Objekt raus, und an einer anderen Stelle wieder rein, zeigt der die Position an, an der ich in das Objekt rein bin, die bleibt dann aber wieder gleich. ich muß also wirklich mit dem vom Objekt ausgleösten onmousemove die Position ermitteln und das geht eben nur mit dem wie ich es oben weiter geschrieben habe.

@Quaese: danke für die Antwort, die unterschiedlichen "Messverfahren" habe ich durch eine Browserweiche berücksichtigt. Und das dazuzählen beim Scrollen kann ich in meinem Fall vernachlässigen, da ich nur die Richtung der Mausbewegung brauche also immer relativ zur letzten Pos.

CU Uli
 

Neue Beiträge

Zurück