■キー割当表示 [Shift-H] |
─ KeyNavi:キーボードを活用して ホームページを快適に─ |
ホーム [0] JavaScriptバグ&回避法リスト:1.目次 [1] 4. イベント(キー入力)編 | ・サイトマップ [Shift-S] |
JavaScriptバグ&回避法リスト |
■ 4. イベント(キー入力)編 |
■ 4.1 accesskeyの動作がブラウザ毎に異なる |
この他に「accesskey」による指定では以下の点に注意する必要があります。
「ALT-F」(=ファイル)などメニューバーへの既存のショートカットを上書きする
メニューに使われているキーはブラウザ毎に異なります。
IE4.0(FEVGAH)、IE5.0-6.0(FEVATH)、NS6.0(FEVSGBTH)、
NS7.0&Mozilla1.2(FEVGBTWH)
など若干バラツキがあります。
これらのブラウザのショートカットを避ける場合は
「ABEFGHSTVW」を使わないようにします。
|
||
環境によっては「ALT」の代わりに「Ctrl(MacIE5.0)」「Shift-Esc(Opera7)」を使う等 操作方法が異なる。ページ内でブラウザ毎に使い方を説明する必要がある。 | ||
NS4,Opera6では動かない | ||
KeyNaviではブラウザ間差異を吸収し 拡張APIにより 「ALT」だけでなく「Ctrl」「Shift」を組合わせたショートカットを作成できます。 また拡張関数を用いてキーの複数回入力(履歴ショートカット)も実装できます。
■ 4.2 Flashにfocusするとキー入力無視(各ブラウザ) |
その結果スペースや矢印キーによるスクロールができません。 キーボードで操作するユーザが混乱する可能性があります。
またTabキーによるFocus位置の移動もFlashの所で止まってしまいます。
【Flashオブジェクトをクリックして実験】 |
KeyNaviの「Ctrl-矢印」によるフォーカス移動機能ではFlashをFocus先にしません。
■ 4.3 event.preventDefault()が動作せず(Opera6) |
追記:Opera7.0ではきちんと動作します。
■ 4.4 keydown,keyup時のキーコードが特殊(IE4+) |
ちなみにこの時 「Q-Z」キーなどを押すと こちらは小文字ではなく大文字になるので原理上 両者の区別はできます。
一方、一般の記号については 「`」が「`」が頭に付く「A」になったり ドイツ語やフランス語で出てきそうなアルファベットが返されます (キーコードが拡張アスキーコードつまり128以上256未満のものになっています)。
KeyNaviでは内部的な仕組みでこの問題に対応し 開発者側でこれらの問題を考慮する必要が無いよう工夫しています。 ショートカットや拡張関数の作成では ブラウザ間差異を考慮せず 単一の短いコードで各ブラウザに対応できます。
■ 4.5 keypress時のキーコードが特殊(Opera6) |
一方、keydown時には正しく処理されるのでそちらで対処します。 逆に記号([]/;)などはkeypress時のみに正しく解釈されるので keypress時に処理します。
先の項目と同じく、KeyNaviでは内部的な仕組みでこの問題に対処しています。
■ 4.6 修飾キー(Ctrl,ALT,Shift)の扱い(各ブラウザ) |
IE4+:keydown,keyup時に「kn='J'」、keypressで「kn='\\n'」(改行コード) | ||
NS4.x:全ての場合で「kn='\\n'」(改行コード) | ||
NS6+:keydown,keyup時に「kn='J'」、keypress時に「kn='j'」 | ||
一方「ALT」キーの場合も 「Ctrl」と同じくショートカットに使われることが多い (「ALT-F」が「ファイルメニュー」)など扱いには特別な配慮が必要です。
KeyNaviでは拡張キー名「knx」というものを定義して この問題に対応しています。 全てのブラウザ、イベントで 「J→"J"」「Ctrl+J→"cJ"」「Ctrl+Shift+J→"csJ"」などと 統一した記述でショートカットや拡張関数を作成できます。
■ 4.7 keypress時にShiftを判定できない(NS6) |
keydown時に「Shift」が押されているか確認し それを内部変数として保持してkeypress時に反映するなどとして対応しています。
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
JavaScriptバグ&回避法リスト 目次
【数字キーでアクセス】
例 : 「2.1節」は「2」キーを2回連打して移動。「Q or P」で戻る。
「Ctrl-矢印」でフォーカス移動。 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
ホーム [0] JavaScriptバグ&回避法リスト:1.目次 [1] 4. イベント(キー入力)編 | ・サイトマップ [Shift-S] |
■キー割当表示 [Shift-H] | ─ KeyNavi Project 2003 ─ |