2011-11-07 8 views
9

Chciałbym dostać wydarzenia na scenie na div. Używam keydown JQuery. Dość proste.Jak uzyskać zdarzenie keydown na elemencie div w chrome?

Jednak nie działa na chrome. Aby to działało na chrome, muszę ustawić tabindex = 0.

Jeśli to zrobię, Chrome umieszcza brzydką pomarańczową obwódkę wokół mojego div.

Czy istnieje sposób na wykonanie tej pracy na chromie bez brzydkiej pomarańczowej granicy?

+0

Pytam, dokąd zmierzasz w ten sposób. Aby mieć wydarzenie typu "keydown", teoretycznie musisz skupić się na swoim elemencie, w przeciwnym razie na czym polega kluczowanie? –

+0

Jak może wystąpić zdarzenie keydown na div? Sądziłem, że tylko dane wejściowe i tekstowe mogą zostać skasowane. – frenchie

Odpowiedz

16

Zdarzenie Keydown jest wysyłane tylko do elementu HTML, na którym jest fokus. Aktywne elementy mogą się różnić w zależności od przeglądarki, ale elementy, dla których ustawiono właściwość tabindex, zawsze mogą uzyskać fokus w większości przeglądarek.

Już ustawiłeś tabindex dla elementu div, dzięki czemu będzie można ustawić ostrość i może odbierać zdarzenia klawiatury. Twój problem jest domyślnym zarysem aktualnie aktywnego elementu w Google Chrome.

Aby zmienić kontur ("brzydką pomarańczową granicę", jak wspomniano), użyj pseudo klasy CSS: ognisko i kontur właściwości CSS. Poniższy przykład spowoduje usunięcie obrysu ze wszystkich elementów, gdy mają fokus:

*:focus 
{ 
    outline: none; 
} 

Mam nadzieję, że ta pomoc.

+1

Wystarczy zauważyć, że dla ułatwienia dostępu ustawienie ouline: none jest ogólnie * nie * zalecane. Zobacz http://webaim.org/blog/plague-of-outline-0 i http://www.outlinenone.com – jbyrd