programmer: Prüfen ob ctrl gedrückt wurde bei mousedown

Hallo zuammen
Ich habe eine onmousedown-Funktion. In dieser möchte ich auslesen, ob während dem "Klicken" die Ctrl-Taste gedrückt wurde. Geht das irgendwie? Wenn man mit window.event arbeitet, kann man die Ctrl-Taste nicht auslesen, da die Funktion onmousedown nichts mit Tastatureingaben zu tun hat. Kann man das aber trotzdem bewerkstelligen?

Herzlichen Dank

  1. Hi,

    Ich habe eine onmousedown-Funktion. In dieser möchte ich auslesen, ob während dem "Klicken" die Ctrl-Taste gedrückt wurde. Geht das irgendwie? Wenn man mit window.event arbeitet, kann man die Ctrl-Taste nicht auslesen, da die Funktion onmousedown nichts mit Tastatureingaben zu tun hat.

    Dann hast du halt noch einen zweiten Event, nämlich den, dass eine Taste gedrückt wurde - also reagiere auch auf diesen, und stelle fest, ob sie "gleichzeitig" passieren. ("Gleichzeitig" in Anführungszeichen, weil eine gleichzeitige Verarbeitung in JavaScript natürlich nicht möglich ist - also schauen, ob beide zeitnah erfolgen.)

    MfG ChrisB

    --
    Light travels faster than sound - that's why most people appear bright until you hear them speak.
    1. Dann hast du halt noch einen zweiten Event, nämlich den, dass eine Taste gedrückt wurde - also reagiere auch auf diesen, und stelle fest, ob sie "gleichzeitig" passieren.

      Warum so umständlich? Dann doch eher ein Flag setzen, wenn die Taste gedrückt bzw. losgelassen wurde:

      ctrlPressed = false  
      document.onkeyup = document.onkeydown = function (e) {  
      	e = e || window.event;  
      	if (e.keyCode == 17) {  
      		ctrlPressed = (e.type == 'keydown');  
      	}  
      };  
      document.onclick = function () {  
      	if (ctrlPressed) {  
      		alert("control click!");  
      	}  
      };
      

      Wobei e.ctrlKey natürlich noch einfacher ist.

      Mathias

  2. Wenn man mit window.event arbeitet, kann man die Ctrl-Taste nicht auslesen, da die Funktion onmousedown nichts mit Tastatureingaben zu tun hat.

    Das stimmt nicht. eventobjekt.ctrlKey ist auch bei Mausevents verfügbar.

    document.onclick = function (e) {  
    	e = e || window.event;  
    	if (e.ctrlKey) {  
    		alert("control click!");  
    	}  
    };
    

    Mathias

    1. Hallo,

      e = e || window.event;

      Was bedeutet diese Zeile? e ist gleich e wenn e existiert, sonst ist es window.event? ( = Browserweiche?) PHP kennt sowas nicht, oder? Bzw. eigentlich logisch, weil es kennt ja auch keine Browserweichen (;-).

      Gruß

      jobo

      1. e = e || window.event;  
        

        Was bedeutet diese Zeile? e ist gleich e wenn e existiert, sonst ist es window.event? ( = Browserweiche?)

        Ja. Es ist dasselbe wie if (!e) e = window.event;
        http://molily.de/js/einbindung.html#event-objekt

        PHP kennt sowas nicht, oder?

        Nein, weil der ||-Operator in PHP nicht den Operand zurückgibt, der in Boolean umgewandelt true ergibt, sondern nur true oder false.

        Der or-Operator z.B. in Python und Ruby verhält sich hingegen wie in JavaScript.

        Mathias

        1. Hallo Mathias,

          Nein, weil der ||-Operator in PHP nicht den Operand

          den _ersten_ Operand vermutlich, der true zurückgeben würde, oder?

          Gruß

          jobo

          1. den _ersten_ Operand vermutlich, der true zurückgeben würde, oder?

            Ja. Wenn bei a || b beide Operanden true ergeben, gibt JavaScript den ersten, also a zurück.

            Mathias

        2. Der or-Operator z.B. in Python und Ruby verhält sich hingegen wie in JavaScript.

          und in Perl, was das Verhalten in PHP seltsam macht, da dieses ja von Perl abstammt

          Struppi.