- ベストアンサー
部分ページURLへのアクセスでトップフレームを表示
わかりにくいタイトルでごめんなさい。 http://www.~.jp/index.htm でアクセスできるトップページは左右の2つのフレームに別れていて、右側にコンテンツ、左側が各コンテンツへのリンク(画像)を表示しているとします。 そこでコンテンツAをクリックしたときには、右側にトップページと同じディレクトリにあるa.htmを表示します(状態A)。これは、targetでフレームを指定しています。 さて、index.htmのURLをご案内して見に来てもらう時は問題ないのですが、a.htmのURLをご案内して来てもらったときは、左側のリンクバーが表示されません。そのときでも、状態Aの様に表示するにはどうしたらいいでしょうか。 全てのページをフレームページにして、リンクバーをロードさせれば実現出来そうですが、あまりスマートには思えなくて...
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
非常に簡単でかつスマートにできる。 (1)それぞれの単体のページのジャバスクリプトとして以下の趣旨の記述を書く。(それぞれのページに具体的に記述するのではなく、共通の読み込みJavaScriptにすれば良い) (論理だけ述べる。 ジャバスクリプトは書かない。自分で調べること) (1).まず、親フレームが存在し、それが本当に自分のHPの親フレームかとうかの一致確認処理。 (レフトフレームの「フレーム名」から判定するのが良い) (2).一致していれば、何もしない(それは左のリンクバーから来たとほぼ間違いなく推察される) (3).一致していなければ、「そのファイルの名前を引数として」トップページを呼び出す。 location.search.substring()などで引数を受け取れる。 ヒントはhttp://oshiete1.goo.ne.jp/kotaeru.php3?q=18407 書籍などにものっている機能。 (4).トップページのジャバスクリプトは、 2つに分ける。 JavaScriptでフレーム分けを吐き出す。 JavaScript内で、引数があるばあいと、ない場合とで、document.writeの内容を変えれば良い。 ※javaScriptを切っていた場合のデフォルト(今のフレーム分けと同じもの)は用意しておくことをお薦めする。
その他の回答 (3)
- shigatsu
- ベストアンサー率26% (511/1924)
私はこんな風にやってます。 まず、JavaScriptでこんなのを書きます。 --- if (window.name != "framename" ) { document.location.href = "frameset.html"; } --- 各ページに <script> </script> で囲んで書いても良いですし、別ファイル(check.jsとしてファイル保存)にして <script src="check.js"></script> なんてこともできます。私は後者のをつかってます。 で、framename には、本来このコンテンツを表示すべきフレームの名前を入れます。targetで指定する名前です。 frameset.htmlはフレームセットを定義しているソースに置き換えます。 動きとしては、自分の表示されているウィンドウ名がframenameでは無い場合frameset.htmlを表示する。という感じです。
お礼
コードで例を示していただき、有難うございます。 Javascriptの知識が足りないので、大変勉強になりました。この方法と他の方が教えてくださった方法を組み合わせれば、何とかできそうな気がします。
- kosa
- ベストアンサー率25% (379/1464)
要するに、すべてのページを単ページで表示するのではなくフレームをつけるということでしょうか? Javaスクリプトを使用して「単ページ」のみでは表示できないようにすることは可能です! しかし、これは単ページのみでアクセスした場合は TOPページを表示することになります! 質問の趣旨とは少し違うのですがどーですか? スクリプト文 ---------------------------------------- <script language="javascript"> <!--// if (top == self) self.location.href="TOPページ"; //--> </script> ---------------------------------------- ※TOPページの所には例:index.htmlとかが入ります
お礼
有難うございました。 今回の目的とは微妙に違った方法だと思いますが、他のところで利用シーンがありそうです。大変参考になりました。
- acky
- ベストアンサー率31% (182/583)
直リンクでフレーム対応させたいということですよね?自分はプログラムの知識はないので、何かのプログラムを組み込めば出来るのかも知れませんが、それは分かりません。以下にはひとつの案として回答いたします。 これを実行するにはそれなりのディスクスペースが必要ですので、あらかじめご了承下さい。 まず、すでにあるデータとは別に、直リンクしたいページも、新たにフレーム構造にします。もちろん名前も違うものを使ってください。a.htmlだったらaa.htmlというカンジです。メニューページもすでにあるものとは別の名前で新規に作成して下さい。とは言ってもデータはすでにあるもののコピーでOKです。そして直リンクページ以外のものは、すべてターゲットで指定します。本来トップページとなるはずのtop.htmlもターゲットにします。こうすると、あたかもフレーム構造で動くように見えます。ただし見かけのURL欄はa.htmlのままですが。。。 これで分かりますか?つまり直リンクしたいページの分だけ余計にフレームページとしてのデータが必要になるわけです。その他のページは共有できますが、もともとのページの戻りターゲットも_selfにしておく必要があります。
お礼
皆様、お礼が遅れてすみません。 フレームをたくさん作るのは避けたかったので、今回はこの方法は取れませんでした。でも、大変参考になりました。有難うございます。
お礼
詳細にご教示くださり、有難うございます。 正直言ってJavascriptはまだまだ勉強不足なのですが、引数を使えばうまくいくということがわかりました。 がんばってみます。