WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:BODYへのフォーカスを防ぐ方法

0:[投稿] Yachimata [2003/04/16 17:02 ][環境:win98,IE5.01 ApacheTomcat]

こんにちわ、Yachimataと申します。
ブラウザ内でのフォーカスに関して質問があります。

<現状>
フレームで区切った画面があります。
区切り方は左、右上、右下の三つです。
左フレームがメニュー、右上フレームがメイン、右下フレームがメッセージをそれぞれ表示する部分となっています。

<不具合>
起動直後に tab を押下すると、アドレスバーにフォーカスが当たり、URIが反転します。
そして、もう一度 tab を押下した時に、フォーカスが左フレームのボディ全体に当たるような状況になってしまいます。
それを避けたくて、<body tabindex="-1"> のように記述しました。

暫くはそれで望むような動作をしてくれていたのですが、IE5.01で動作させてみたところ、IEのエラーが起こり、IEが終了して閉じてしまう事が分かりました。
以下がその際に表示されるメッセージです。

<エラーメッセージ>
IEXPLORE のスタック エラーです。
モジュール : OLEAUT32.DLL、アドレス : 0167:7fe90b6e


tabindex="-1" を外すとエラーは出ませんが、ボディ全体にフォーカスが当たってしまいます。
色々調べてみましたが、同様の事例とそれに伴う解決策を観つけることが出来ませんでした。

ブラウザのバージョンアップやパッチを当てる等の対応が出来ないと仮定した場合に、有効な解決策はないものでしょうか。
もしくは、tabindex 以外にボディ全体にフォーカスを当てる事を防ぐ別な手立てでも構いません。

どうか宜しくお願いします。


1:[質問] Yachimata [MAIL] [2003/04/17 15:13 ]

『そこまでやる必要ないのでは?』という意見を頂きました。

通常といいますか、普通はといいますか、他のサイトではどうなんでしょう。

そんな事までやってるWEBサイトなんて殆どない、
という事であれば、わざわざ対応策に時間を取る事もないという判断になるかもしれません。

今からフレームを使っているサイトを捜して
見回ってみようと思います。


2:[回答] chintara [2003/04/17 20:05 ]

<body onfocus="top.focus()">
とか
<body onfocus="window.blur()">
とか。


3:[回答] ひじ [2003/04/18 00:31 ]

そもそも
・body要素にtabindex属性はない(HTML4.01の場合)
・tabindex属性の値は0〜32767(HTML4.01の場合)
です。

まあ、MSのHTMLでは、IE5.01以上では良いらしいのですが、
http://msdn.microsoft.com/workshop/author/dhtml/reference/properties/tabindex.asp
Webで全世界に公開する文書で使うべきではないでしょう。

>>1
>『そこまでやる必要ないのでは?』
というのは、私も聞きたいです。
Yachimataさんがやっているのは、ユーザの利便性を奪う行為です。
IEユーザがアドレスバーが選択されている状態でタブを押したときは、次はフレームがフォーカスされる、ということを期待しているはずですが、その期待を裏切っています。また、本当に該当フレームにフォーカスを移したいときにそれができない、ということになります。
#右クリック禁止が駄目だと言われる理由と同じです。


4:[完了] Yachimata [MAIL] [2003/04/18 09:29 ]

なるほどなるほど。
chintara さん、ひじさん、助言有り難く存じます。

依頼人と話し合って対応を決めたいと思います。
有難う御座いました。

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World