技 巧 鍵 盤 | ─ KeyNavi:キーボードを活用してホームページを快適に─ |
■ キー割当表示[Shift-H] |
ホーム KeyNavi対応方法 [0] JavaScript@Keynavi.Netトップ [1] JavaScriptで注意すること | ・サイトマップ [Shift-S] |
JavaScriptは for,while,if,switch文が使える、「/*...*/」や 「//...」 でコメントできるなど 他の言語との共通点が多いものの同じではありません。
JavaScriptでは別のモジュールを読み込む時に 名前空間を別にすることはできません。 それらで使われている変数名はそのままJavaScriptの大域的な名前空間 (JavaScript的にはselfオブジェクト)に属します。
開発に携わる人数が複数の場合、第三者のスクリプトを使う場合は 既存のオブジェクトを誤って上書きしてしまわないよう 変数や関数の命名規則を決めておきましょう。
逆に この簡単に上書きできるという性質を使って 既存の関数の動作を変えることもできます。 これにより書き換えられた関数を参照している コード(既存モジュール含む)の動作をカスタマイズできます。
status出力をリダイレクト:kl_status(s,opt) では ステータスバーに文字列を出力する関数「kl_status(s,opt)」 を再定義し 出力先をページの中心に表示する半透明レイヤーにしています。
KeyNaviのカスタマイズでも 大元のファイル「keynavi_ja.js」は そのままで 既存関数の再定義により行うのをお勧めします。 バージョンUp、コード管理が容易になります。
これは「<body onclick="処理内容">」とするか JavaScriptで 「document.onclick=ハンドラ関数」などとすればOKです。
ここで別のJavaScriptモジュールでもクリックのハンドラを追加するとします。 うっかり「document.onclick=ハンドラ関数」とすると 前の指定を上書きしてしまいます。 その結果、クリック時には最後に追加されたハンドラしか動作しません。
この問題を避けるには 既定のハンドラ関数を保持して 旧いもの、追加するもの両方が実行されるよう工夫します。
一方、前項のようにイベントハンドラを指定し 特定のイベント発生に合わせて 実行することもできます。よく使われるものとして「onLoad」ハンドラがあり これを指定すると ページの内容が全て(画像類含む) 読まれたあとに実行されます。
ページのロード中でも実行させたい場合は 起動スクリプトをスクリプト内で実行、 ページ内容が確定してから実行したい場合はonLoadで実行しましょう。
KeyNaviのカスタマイズでは 拡張用関数「kl_setup_ex()」「kl_onload_ex()」を定義しておくと 両者のタイミングに合わせて自動で実行されます(ハンドラ登録不要)。
それら全てで動作するスクリプトを書くのはとても大変です。 新たに追加した機能を 毎回 複数のPCで動作確認するのは面倒なので 1台のPCで複数のWindows、Linux環境を利用できる VMwareやVirtualPCなどを使うといいでしょう。
関数内で作成した変数は「var」をつけ忘れると 大域変数の定義,上書きになります。 型の扱いも緩く 「if(1=="1")...」は真です。 また、IEやOperaでは タグに「id」や「name」指定をすると 同名のオブジェクトが大域的な名前空間内にできてしまいます。
なかなかバグが取れないと思ったら 実はこれらが 原因ということもあるので注意しましょう。
【JavaScript@Keynavi.Net :
基本編
】
「Ctrl-矢印」でフォーカスを上下左右に移動できます。
|
トップへ戻る [1] | Back[Q] ・Top[W] ・Up[E] ・PgUp[R] ・Focus[Ctrl-矢印] |
ホーム KeyNavi対応方法 [0] JavaScript@Keynavi.Netトップ [1] JavaScriptで注意すること | ・サイトマップ [Shift-S] |
■ キー割当表示[Shift-H] | ─ KeyNavi Project 2003 ─ |