Scribbles.?雑文集》 2000年5月30日

onFocusがHTML4仕様の規定通りに使えたら便利なのになぁ

内田明 <uchida@happy.email.ne.jp>

フレームとJavaScriptが必須であるようなコンテンツの制作中、今ごろになって気づいたことがある。

“Webコンテンツづくり”について、Netscape CommunicationsのDevEdge OnlineやMicrosoftのmsdn onlineではなく、W3C仕様に基づいて勉強を始めてしまった不幸なワタクシは、ユーザが起点アンカーをポインティングデバイスで指したりタブキーでフォーカスを当てたりする動作のすべてがonFocusなイベントに含まれると思い込んでいたのだけれど、現実の実装は異なるのだ。

現行のブラウザで動作するスクリプトを以前から書き続けていた方々には面白くも何ともない話だろうけれど、自分にとっては新鮮な発見だった。


冒頭のコンテンツで用いたJavaScriptは、リンクボタンなどで使われることが多いスクリプトで、“起点アンカーをポインティングデバイスで指すと画像の切り換えが起こる”類のものである。自分が行う処理は“リンクボタン”とはちょっと違うのだけれど、“起点アンカーがフォーカスを受け取ったら対応する画像が切り替わる”という点が共通している。

雑誌や書籍、ウェブであれこれ紹介されているサンプルスクリプトは皆onMouseOverイベントとonMouseOutイベントのみで処理していたのだけれど、“ユーザが起点アンカーをポインティングデバイスで指したりタブキーでフォーカスを当てたりする動作のすべてがonFocusなイベントに含まれる”と思い込んでいた自分は、onMouseOverをonFocusにし、onMouseOutをonBlurイベントに書き換えた。Webコンテンツのアクセス性指針1.0に言われるまでもなく、デバイスに依存しないイベントでスクリプトが動いてくれた方が幸せだからだ。

ところが、である。書き上げたスクリプトを含むページの試運転をしてみたところ、ポインティングデバイスには反応せず、タブキー移動にしか反応しない。試運転をした環境は、Cerelon 400なMS Windows98上のNetscape 6 PR1(ja)である。当然のように、MSIE 5.0 for Winでも動かない。


2000年3月のW3Cノート「Webコンテンツのアクセス性指針1.0対応HTML技法」12.2デバイスに依存しないイベントハンドラを確認してみると、さり気なく注意書きがしてあった。

Note that these attributes are designed to be device-independent, but are implemented as keyboard specific events in current browsers.

そう言われてみると、HTML4仕様にも、“イベント関係はDOMの動向に注意せよ”といった感じの注記があった。

そこで改めてDOM1とDOM2を眺めると、DOM2に至っても、HTMLAnchorElementのMethodであるfocus及びblurはキーボード特有であり、かつユーザインターフェイスのイベント型定義ではDOMFocusInやDOMFocusOutはHTMLのfocusとは違ってFORM関連だけではなくフォーカスの受け手となる全要素を対象とし、ポインティングデバイスやキーボードの入力でフォーカスのやりとりをする――みたいなことが書いてある。


過去の遺産のしがらみに負けて、onFocusやonBlurはデバイス非依存なイベントではなくキーボード特有のイベントであるということに決まってしまうのであろうか。HTML 4.*仕様で、そのへんが修正されたりするのであろうか。

釈然としない気持ちのまま、onMouseOver/onFocusとonMouseOut/onBlurという2組のイベントハンドラを引き金とするスクリプトを書きつけることにした敗北者のワタクシである。

onFocusがHTML4仕様の規定通りに使えたら便利だったんだけどなぁ。


余談

Netscape 6 PR1 for Macでタブキー移動を試してみたところ、フォーカスは移動しているように思われるのだが、フォーカスが外れたら消えるはずの点線が消されずにレンダリングされたままとなってしまう。Milestone 14までのGekkoの試用期間中、誰もタブキーについて試さなかったのではあるまいかという疑念が脳裏を過る。

Netscape 6 PR1 for Win(ja)では、ページ内容よりも先にナビゲーションボタンなどにフォーカスが当たるようであるものの、どこにフォーカスが当たっていてもレンダリングが変化しないのでタブキーではフォーカスを移動できない。タブキー試験が不在だったのではないかという疑念が確信に変わりそうになる。

例えば全国500万人のユーザがiモードで“十字キーでフォーカス移動を行う”経験を積んでいることや、WebTV以外のベンダーから“テレビがあればインターネットができる”機器が発売された等、限られたユーザインタフェイスでページを繰る経験は、今後ますます増えて行くことが予想される。MS WindowsやMacOSのユーザであっても、ノート型マシンの場合はポインティングデバイスよりキーボードの方がページを扱いやすかったりするであろう。

MSIE 5.0 for Macのデフォルトのように、“ポインティングデバイスでonMouseOverとなった起点アンカーも、タブキーでonFocusとなった起点アンカーも、同じようにoutlineが出現する”というレンダリングが好きかどうかは別として、やはり、普段からポインティングデバイス以外によるページ読みについても気遣うことが必要であろう。


2000年5月30日
内田明 uchida@happy.email.ne.jp