• 締切済み

キーボード ナビゲーションに付いて

html の勉強中でいろいろ調べていますが http://www.amy.hi-ho.ne.jp/mizuy/gl/keyNavi.htm でキーボード ナビゲーションの使用方法が有りましたのでいろいろテストしましたが フレームされた内容に対してのコントロールが出来ませんで、こまっています てんキーで出来る Home End PageUp PageDown の指定をキーボード ナビゲーションで処理可能ですか(Home Endは、フレーム分割していない場合うまく動きます) 可能でしたら教えて下さい よろしくお願いします

みんなの回答

回答No.3

#2 の「回答に対するお礼」での記述に対して。 window.parent.s.location.href = "#b_a1"; 動作している場所 の親(parent) の処の s という名称の場所で表示している内容(location) のアドレス(href) に対して値を代入する(= "#b_a1") という記述ですが? s の内容を変更する処理が例示されているので s の内容が変わる事は自然と思われます。 これが親に記述されて親で動作している場合は、 window.self.s.location.href = "#b_a1"; と同等となり window.s.location.href = "#b_a1"; と同等を意味します。 また、これが子の s に記述されてそこで動作している場合は、 window.self.location.href = "#b_a1"; と同等となり window.location.href = "#b_a1"; と同等を意味します。 そして、これが子の m に記述されてそこで動作している場合は、 s に対しての代入なので、同等の処理は他に記述がありません。 つまり、どこで何が動作しているか全てのパターンを把握し 個々のパターン別に処理を用意してあげなければならないので、非常に面倒です。 例示でもどのソースに対しての処理記述かが提示されていない処から推測して その処理場所の配慮が意図とずれているのではないかと思います。

katu0021
質問者

お礼

再度回答有難うございます <SCRIPT type="text/javascript"><!-- var Key = new Array(); Key[0] = "s/isi_01.htm"; function checkCSRKey() if (event.keyCode == 49) parent.s.location.href = Key[0] + '#b_a1'; //1 は表示ページの最後の表示 if (event.keyCode == 55) parent.s.location.href = Key[0] + '#a_t2'; //7 は表示ページの最初の表示 } window.document.onkeydown = checkCSRKey; // --></SCRIPT></HEAD>  <FRAMESET rows="92%,*" frameborder="NO" border="0"><FRAME src="s/isi_01.htm" name="s"><FRAME src="s_up01.htm" SCROLLING="no" name="m">   上記内容は、親フレームの指定で テンキーのEndとHomeの指定です  No2のお礼で記述内容をいろいろテストした結果上記指定でうまくいきました(フレーム分割して上記sフレームに制御が無くても動きました)  テンキーのPageUpとPageDownにトライしてみようと思います

すると、全ての回答が全文表示されます。
回答No.2

#1の者ですが、 そもそも フレーム 自体が何故必要なのかが検討ポイントです。 フレーム とは、親のソースがあり それが子のソースを呼んで表示するものです。 <frameset cols="140,*"> <frame src="./sample02.htm" name="snmKofrMenu"> <frame src="./sample03.htm" name="snmKofrMain"> <noframes> </noframes> </frameset> 上記の様な sample01.htm があったとして、表示処理をした後、キー操作がされた時にそのキー操作がどれを意図しての操作か、ただ表示しただけでは判りません。 例示では sample03.htm をメインと意識しているので 操作は全てそのページを意識して行われている物として 処理するという考え方が出来ますが。 で、その場合、sample01.htm ではそのソースが拾ったキー操作を判断して window.snmKofrMain.location.href の内容で メイン に何が表示されているか判断しその内容を更新する事によってそのページを遷移させます。 sample02.htm では、window.parent.snmKofrMain.location.href の内容で メイン に何が表示されているか判断しその内容を更新する事によってそのページを遷移させます。 top がその窓の一番上,parent がその動作する処の1つ上,self が自分自身を表し、その動作が親(上がない)場合はtop, parent, self 共に同じです。 普段は self は省略されています。 で、面倒なのが、もし snmKofrMain に sample04.htm が表示される場合、 sample01.htm, sample02.htm はそのパターンも考慮しなければいけないので手間です。 それよりも、JavaScript が無効とか フレーム未対応とか 障害者にやさしいと考えると 結局は、よりシンプルなページ作成が一番の様ですが。 その上で便利な追加機能として考えるしかないかと。

参考URL:
http://www.tohoho-web.com/js/window.htm
katu0021
質問者

お礼

再度回答有難うございます >結局は、よりシンプルなページ作成が一番の様ですが。 参考URLによりをシンプルなフレーム分割は掲示板等のCGIを使用しない場合は、何とか動きますが  NN4とIEの共通キーに対するキーコードを見ると数字と英字の大文字のみ対応しません  CNTL+英字も英字と同一キーコードですので簡単に調べても8個使用できない等の問題も有ります <SCRIPT type="text/javascript"><!-- function checkCSRKey() if (event.keyCode == 49) window.parent.s.location.href = "#b_a1"; //1 は表示ページの最後の表示 if (event.keyCode == 55) window.parent.s.location.href = "#a_t2"; //7 は表示ページの最初の表示 } window.document.onkeydown = checkCSRKey; // --></SCRIPT></HEAD>  <FRAMESET rows="92%,*" frameborder="NO" border="0"><FRAME src="s/isi_01.htm" name="s"><FRAME src="s_up01.htm" SCROLLING="no" name="m"> でテストすると1をキーインするとname="m"の内容2個になってしまいました if (event.keyCode == 49) location.href = "#b_a1"; //1 は表示ページの最後の表示 if (event.keyCode == 55) location.href = "#a_t2"; //7 は表示ページの最初の表示 で指定するとなぜか正常に起動します。

すると、全ての回答が全文表示されます。
回答No.1

たぶん可能だと思いますが、 たぶん大変面倒になるかと・・・。 まずプログラムですから、どこで動くかを意識しないと。 で、フレームでのキー操作がどこでアクティブ?になっているか??? フレームの親でキー操作がされていたとして フレームの子は複数あるのか? 複数ある場合にどこに対しての処理として振り分けるのか??? それらの事が決められる状態であるのなら 次はプログラムがそれを認識したり制御できるか??? window.フレーム名.location.href の内容で何がフレームに表示されているか判断し、制御する処理を親フレームに記述する・・・。 尚、フレーム分割に於いて、それぞれのページにナビがある場合は、親にキー操作された場合にどのページに対してのキー操作と割り振りが困難となる為に ナビは不可というか操作側の意図が適切に表せなくなるので要注意です。 (左右に分けた場合で操作側は右を次へ遷移させたいと思い操作して左が遷移しては・・・。)

katu0021
質問者

お礼

回答有難うございます window.フレーム名.location.href との記述有りましたがフレームに制御けんが渉ると機能するのですか location.href でどのような指定が出来るか不明で質問ししました 何かlocation.hrefの仕様説明のホームページ等有りましたら教えて下さい 特にlocation.hrefでのtargetの指定方法 障害者にやさしいホームページ作成は簡単に出来ないのですか??

すると、全ての回答が全文表示されます。

関連するQ&A