memo: javascript keyboard event
自作のAngularJSで組んでるアプリでKeyboard eventが必要になったので、簡単なライブラリを組んでたらハマったのでメモ。
UnitTestでChrome、Firefox、PhantomJSとやっていて、全部実装が違うってどういうことなのかと。
FX
KeyboardEvent.initKeyEvent (type, bubbles, cancelable, viewArg, ctrlKeyArg, altKeyArg, shiftKeyArg, metaKeyArg, keyCodeArg, charCodeArg)
IE10
- http://msdn.microsoft.com/en-us/library/ie/ff975297(v=vs.85).aspx
KeyboardEvent.initKeyboardEvent(eventType, canBubble, cancelable, viewArg, keyArg, locationArg, modifiersListArg, repeat, locale);
Safari/Chrome
KeyboardEvent.initKeyboardEvent(typeArg, canBubbleArg, cancelableArg, viewArg, keyIdentifierArg, keyLocationArg, modifiersListArg, repeat);
Phontomjs
initKeyboardEvent( type, canBubble, cancelable, view, keyIdentifier, keyLocation, ctrlKey, altKey, shiftKey, metaKey, altGraphKey); initKeyboardEvent(type, canBubble, cancelable, view, keyIdentifier, keyLocation, ctrlKey, altKey, shiftKey, metaKey);
W3C DOM Level 3
KeyboardEvent.initKeyboardEvent (typeArg, bubblesArg, cancelableArg, viewArg, detailArg, keyArg, locationArg, modifiersListArg, repeat);
dictionary KeyboardEventInit { boolean bubbles = false; boolean cancelable = false; AbstractView? view = null; long detail = 0; DOMString key = ""; unsigned long location = 0; boolean ctrlKey = false; boolean shiftKey = false; boolean altKey = false; boolean metaKey = false; boolean repeat = false; unsigned long charCode = 0; unsigned long keyCode = 0; unsigned long which = 0; };
参考情報
- http://unixpapa.com/js/key.html
- https://developer.mozilla.org/ja/docs/DOM/KeyboardEvent
- http://vividcode.hatenablog.com/entry/dom/keyboard-events
specialKeyの各実装
Chrome,IE
event.shiftKey event.ctrlKey event.altKey event.metaKey
FX,OP?
e.modifiers
keyCodeの各実装
which keyCode key charCode char keyidentifier