• ベストアンサー

改・キーボードナビゲーション

http://oshiete1.goo.ne.jp/kotaeru.php3?q=762151 にて質問し、解決したに見えたのですが、確認もせず閉じた為、再度投稿させて下さい。 ページトップにフレームファイルを置き、 <frameset cols="250,*" frameborder="0" framespacing="0"> <frameset rows="16,*" frameborder="0" framespacing="0"> <frame src="***.html" name="0" SCROLLING="NO" NORESIZE> <frameset rows="25,*" frameborder="0" framespacing="0"> <frame src="***.html" name="1" SCROLLING="NO" NORESIZE> <frameset rows="51,*" frameborder="0" framespacing="0"> <frame src="***.html" name="2" SCROLLING="NO" NORESIZE> <frame src="***.html" name="3" SCROLLING="NO" NORESIZE> </frameset> </frameset> </frameset> <frame src="***.html" name="4" SCROLLING="NO" NORESIZE> </frameset> とします。 NAME“0”のページがメニューで、ここをクリックするとNAME“1”に開かれる仕組みです。 NAME0に、 function checkNavigation() { if(event.keyCode==49)location.href="NAME1に開くページ"; } window.document.onkeydown = checkNavigation; と書きます。 前投稿では、「1.location.~」とすればOKだとなっていたのですが、確認した所何故か機能しませんでした。 NAME0をアクティブページにして“1”を押下してみたり、試して見たのですが駄目でした。 どうしたら良いのでしょうか。お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#25358
noname#25358
回答No.3

 前回の投稿を見て、自分のHPに実際に搭載してみました(笑)  で、スクリプトは「フレームファイル」に定義しないといけません。  でないと、どこにフォーカスが当たっているかによって、スクリプトが動作したりしなかったりします。  それから、name="" の値は、必ずアルファベットから始まるようにしてください。たとえば "n0"、"n1" とか。  でないと、JavaScript から巧くアクセスできません(オブジェクトが中途半端に生成されてしまうため)。  フレームの1つを name="n1" と定義した場合、    window.n1.location.href="wwwww"  と記述することによって、"wwwww" ページに飛びます。    

vrok
質問者

お礼

「フレームに設置」は盲点でした! 「IFRAMEに使ってみるか...」とは思ったのですが、アクティブページは移動してしまい駄目だろうと試しもしませんでした。 アルファベットからで無いとウマく行かない点も、既に回答して下さった方の物も含め、とても勉強になります。 回答有難う御座います。

その他の回答 (2)

  • Struts
  • ベストアンサー率48% (29/60)
回答No.2

それぞれのnameをpage0、page1のようにし parent.page1.location.href="開くページ"; でどうでしょう?

vrok
質問者

お礼

回答No.1以降のname属性は「dk0・dk1・dk2・dk3・dk4」にしましたので、 恐らく同じ結果に思います。 わざわざすみません。回答有難う御座います。

noname#199778
noname#199778
回答No.1

フレームにつけた名前を変えてみてください。 JavaScriptでは、フレーム名などのname属性に、数字から始まる文字列は使用できないはずです(数字のみや、000frameなどはNG)。 数字以外の文字から始まる名前に変える必要があるでしょう。 また、別フレームを指定する場合は、いきなりフレーム名を指定するのではなく、フレームの階層も明示する必要があるでしょう。 parent.ターゲットのフレーム名.location.href="URL"; という指定に変えてみてください。

vrok
質問者

お礼

name属性を“dk*”に変更した所、しっかりと機能しました! ただ、タグが打ち込んであるページがアクティブになっていないと機能しない様で、 一度name属性dk1の所へ開いた後は効果が無く、その後にdk2、dk3と続けて行く事は無理みたいでした。 同じウインドウ内に操作専用のページを入れれば続けて機能してくれる様なので、 それを考慮してみようかと思います。 回答有難う御座いました。

関連するQ&A

専門家に質問してみよう