板 1- 前 次 新 レス
管理人の雑記
[21]管理人 ★:06/09/04 23:10 ID:???
リファレンスの左フレームの検索スクリプトをFirefoxとOperaに対応させた。
どっかで拾ったDHTMLリファレンスにあったdocument.allという機能はIE依存だったらしい。
document.getElementByIDとdocument.getElementsByTagNameで代用する。
onkeydownとかのイベント情報は、IEではグローバルなevent変数に格納されているが、
ブラウザによってはイベントメソッドに引数として渡されるらしい。
イベントが発生したエレメントも、IEではevent.srcElementだったが、targetプロパティの時もあるらしい。
とりあえずそれらの情報が存在するかを判別して、存在する物を別の変数に入れて使用するようにした。
検索結果の重複を取り除く部分のコードが自分でもよく分からないものになっていたので書き直した。
なぜか、FirefoxとOperaでは上下キーでフォーカスを移す部分が動かない。
focus()メソッド自体は動くようだが、イベントの発生した状況によってはフォーカスを変更しようとするとエラーになる模様。
try構文とかでも拾えないのが謎だ。
とりあえず、イベントが発生した要素ではなく、body要素でイベントを拾うようにしたら動くようになった。
document.activeElementも無いらしく、検索結果上での上下キー移動が動かない。
面倒なので、要素オブジェクトにfocusedとしてフォーカス情報を保持しておくことにした。
マウスなどでフォーカスを移動するとおかしくなるが、普通は検索ボックスに入力してから上下キーで移動するだろうから特に問題ないだろう。
とりあえず、3つのブラウザで概ね期待通り動くようになった。
上下キーでの移動時のスクロール動作が微妙に違うが、実用上は問題ないのでいいだろう。
前 次