2013-08-19 12 views
8

Ich habe mich gefragt, ob ich CTRL und SHIFT Schlüssel ohne OHNE Keydown Ereignis erkannt werden kann.Erkennen STRG und UMSCHALTTASTE ohne Keydown-Ereignis?

Der Grund ist, dass ich eine Art von Grid-Viewer in JavaScript erschaffe, und ich implementiert durch verschiedene Elemente auswählen CTRL oder SHIFT Schlüssel, wie es in den meisten üblichen Zuschauer, Redakteure funktioniert und so weiter zu halten.

Das Problem ist, dass wenn der Fokus nicht irgendwo auf der Seite ist. Zum Beispiel füge ich den Lesezeichen eine Seite hinzu. Dann halte ich CTRL oder SHIFT und klicken Sie auf das Element, aber es verhält sich normal, wie Keydown wurde nicht ausgelöst.

Jede Möglichkeit, dies zu unterlassen? Vielleicht nicht, aber es kann für Kunden verwirrend sein, die es als meinen eigenen offensichtlichen Programmfehler behandeln.

+0

Wenn sie es als einen Fehler von Ihnen behandeln, ist das ihre Schuld. Wenn sie Ihre Seite nicht fokussieren möchten, erhalten sie Ihre Funktionen nicht – Ian

+2

Sie können diese Schlüssel auch in 'onclick' Handler erkennen ... – Teemu

+1

@Teemu Guter Punkt. Ich bin mir nicht sicher, warum das Ereignis "keydown" verwendet wird. Alles sollte am Klickpunkt überprüft werden – Ian

Antwort

15

Sie brauchen keine Schlüsselereignisse an allen Shift-, Ctrl und Alt zu erkennen, wenn die Maus MDN geklickt wird.

Das Event-Objekt enthält folgende Informationen:

element.addEventListener('click', function (e) { 
    console.log(e.shiftKey); 
    console.log(e.ctrlKey); 
    console.log(e.altKey); 
}); 

A demo at jsFiddle.

Diese Eigenschaften können auch in Tastatur-Event-Handlern gelesen werden.

Verwandte Themen