aタグ以外にもフォーカスは当てられる

以前、Add Tab Index for Googleを作っていたときに、こんなバグがありました。

なんでこんなところにフォーカスが・・・。



不思議に思って調べてみたところ、フォーカスを当てられるのはaタグに限らないそうです。
もっと言うと、どのタグにもフォーカスは当てられるということを知りました。
タグにtabIndex属性を指定すればいいそうです。

参考サイト:キー操作可能なカスタム DHTML ウィジェット | MDN
サンプル:ARIA Checkbox (http://www.mozilla.org/access/dhtml/checkbox)

<span tabIndex="0" onclick="alert('フォーカスできる!');">このSPANをクリック</span>
<div tabIndex="0" onclick="alert('DIVもOK!');">このDIVをクリック!</div>

tabIndex="0"で普通のaタグと同じフォーカスの当たり方になります。
また、tabIndex="-1"でタブではフォーカスされないけど、focus()を呼べばフォーカスされるようになります。
しかも、これはFirefoxの方言ではないのでIEでもSafariでもOK。


<a href="javascript:void(0);" onclick="〜"> と書くのと同じですが、SPANを使ったこのやり方の方が断然いい気がします。
ただ、このやり方、あんまり見ないので何か弱点でもあるのでしょうか・・・。