2013-08-19 13 views
8

Mi sono chiesto se sono in grado di rilevare CTRL e tasto SHIFT premuto SENZA utilizzare l'evento keydown.Rileva i tasti CTRL e SHIFT senza evento keydown?

La ragione è che sto creando una sorta di griglia Viewer in JavaScript, e ho implementato selezione delle voci diverse tenendo CTRL o SHIFT chiave come funziona nei visualizzatori più comuni, editori e così via.

Il problema è che quando lo stato attivo non è da nessuna parte sulla pagina. Ad esempio sto aggiungendo la pagina ai segnalibri. Quindi tengo CTRL o MAIUSC e fai clic sull'elemento, ma funziona normalmente poiché il keydown non è stato attivato.

Qualsiasi modo di omettere questo? Forse no, ma può essere fonte di confusione per i clienti che lo considereranno come il mio bug ovvio.

+0

Se lo trattano come un insetto, è colpa loro. Se non vogliono mettere a fuoco la tua pagina, non ottengono le tue funzioni – Ian

+2

Puoi rilevare quelle chiavi anche nel gestore 'onclick' ... – Teemu

+1

@Teemu Buon punto. Non sono sicuro del motivo per cui viene utilizzato l'evento 'keydown'. Tutto dovrebbe essere controllato al punto di clic – Ian

risposta

15

non avete bisogno di tutti gli eventi chiave a tutti per rilevare Maiusc, Ctrl e Alt quando il mouse viene cliccato MDN.

L'oggetto evento contiene le seguenti informazioni:

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

A demo at jsFiddle.

Queste proprietà possono essere lette anche in gestori di eventi tastiera.

Problemi correlati