• ベストアンサー

フレーム&リファラ

content1.html のページからリンクして、 frame.html(menu.html , content1.html) を表示するにはどのような方法があるでしょうか。 *.html からのリンクで、 frame.html(menu.html , *.html) を表示させるようにする記述を教えていただきたいです。 一応、フレームは cols="120,*" として120の方が menu.html です。 また、frame.html(menu.html , *.html)が表示されている状態で、 menu.htmlの方のリンクで、*.htmlだけを表示する(フレームを解除する)ことは出来るのでしょうか? ページのURLはlocation.hrefで取得できますが、どのように応用すればよいのかという感じです…。

  • quads
  • お礼率87% (87/99)
  • HTML
  • 回答数5
  • ありがとう数4

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

  • ベストアンサー
回答No.2

動いてしまったものは仕方ない・・・ ■content1.html <html><body> content1<br> <a target="_top" href="frame.html?content1.html">frame</a> </body></html> ■frame.html <html><head> <script type="text/javascript"><!-- document.write('<frameset cols="20%,*">\n'); document.write('<frame src="menu.html?' + location.search.substr(1) + '">'); document.write('<frame src="' + location.search.substr(1) + '">'); //--></script> </head></html> ■menu.html <html><head> <body> <script type="text/javascript"><!-- document.write('<a target="_top" href="' + location.search.substr(1) + '">noframe</a>'); //--></script> </body></html> refererを使えばアドレス欄がきれいになるのですが、 refererを無効にしたり詐欺するツールがあるので 使わないほうがいいでしょう。

quads
質問者

お礼

動作確認させていただきました。ほぼ完璧ですw 大変感謝しております。 JSに関しては変数くらいしか使いこなせないレベルなのでもう少し理解を深めてみたいと思います。 仰られるように、この方法だと効果は理想のものですがアドレス表示が少し気になりますね…。 しかし逆にこの方が良かったりもするのでこの記述を利用させていただきたいと思います。 更にアドバイス等あればお願いします。 回答が見られないようなら2、3日後に締め切りたいと思います。 05-03-31 01:25

その他の回答 (4)

回答No.5

このときは、frame.html のどこかに <noscript> JavaScriptが必要です </noscript> のような記述をすれば、とりあえずはうながせます。 もし、固定ページのフレームでよければ <noscript> <frameset ....> <frame src=menu.html> <frame src=どこかのページ.html(例:content1.html)> </frameset> </noscript> のようにしてもいいでしょう。 menu.htmlも、同じように<noscript>に対応して、フレーム解除もできるかとできます。 (JavaScriptでタグ生成しているので・・・)

quads
質問者

お礼

回答ありがとうございます。 HTMLタグとスタイルシートに関してはある程度詳しいのですが、JavaScriptは全然分からないのでお聞きしてしまいました。。 <html></html>内に直接<script><noscript>を書いたり、<frameset>が直接ないのも抵抗があるので応用して使わせていただきます。 今回ご回答いただきありがとうございました。

回答No.4

location.href を使わなかった理由には、referer相当が取得できない(Norton等により)、または詐欺されている可能性があることを考慮してあります。 Cookieが生きていれば、Cookieを利用する手もあるのですが、ブラウザによっては利用確認のダイアログが出たりとうざかったりもします。 今回、location.search (サーバーの環境変数だと、QUERY_STRING)を使ったのは、最もオーソドックスな例として出しておきました。 それとは別に、アドレス欄に表示されたくないのなら もうひとつ上位のフレームを作り、その下に表示する手もあります。 この場合、target="_top" ではなく、適切なものにかえる必要がありますが、これをやると全部が全部かわってしまいます。汗

quads
質問者

お礼

アドバイスありがとうございます。 編集してて気になったのですが、JavaScript対応していない場合にいろいろ不味いことが起こりますよね…。 JavaScriptとFrameが有効でないと滅茶苦茶に…。 未対応ブラウザまで配慮してたらキリがないので、フレームを利用される場合にはJavaScriptが有効であることを前提とするような構成にしたいと思います…。 その上で更に質問なのですが、メニューの方からnoframeにした場合に表示されるページは、フレームのURLの?以降のページですよね。 実際にコンテンツの方に表示されているページというのは出来ないのでしょうか? 重ね重ね恐れ入ります…。 05-03-31 03:10

quads
質問者

補足

index.htmlからフレームを表示させた場合、 frame.html?index.html となりますが、 menuの方で他のリンク先を<a href="content2.html" target="migi">のような普通のリンクをさせた場合、アドレスは変わらず、コンテンツ部が変わってもnoframeで表示されるページはindex.htmlになってしまいますよね…。 リンクの仕方を<a href="frame.html?content2.html" target="_top">としてしまうと、フレームが書き換えられる操作が行われるのでフレームごと読み込まれ、リンクがスムーズに行われないような気がするのです…。 補足させていただきました。

回答No.3

menu.html の <head>が閉じていませんでした。。。 location.hrefでは取得できることは取得できるのですが フレームに乗ったアドレスのURLを取得するのは困難がありますので(URLが化ける 「:」が%3a 等・・) 明示的にcontent1等でフレームを乗っける時に明示的にファイル名を指定するといいでしょう。

  • gura_
  • ベストアンサー率44% (749/1683)
回答No.1

例えばこういうことですか。 >content1.htmlからリンクして、frame.html(menu.html , content1.html)を表示 【content1.html】 <html> <head></head> <body> content1.html<br><br> <a href="frame.html" target="_top">frame.html(menu.html,content1.html)へリンク</a> </body> </html> 【frame.html】 <html> <head> <title>frame.html</title> </head> <frameset cols="120,*"> <frame src="menu.html" name="hidari"> <frame src="content1.html" name="migi"> </frameset> </html> >*.htmlからのリンクで、frame2.html(menu.html , *.html)を表示 【x.html】 <html> <head></head> <body> *.html<br><br> <a href="frame2.html" target="_top">frame2.html (menu.html,x.html)を表示</a> </body> </html> 【frame2.html】 <html> <head></head> <frameset cols="120,*"> <frame src="menu.html" name="hidari"> <frame src="x.html" name="migi"> </frameset> </html> >また、frame2.html(menu.html , *.html)が表示されている状態で、 menu.htmlの方のリンクで、*.htmlだけを表示する(フレームを解除する) 【menu.html】 <html> <head></head> <body> menu.html<br><br> <a href="x.html" target="_top">*.htmlを表示(フレーム解除)</a><br><br> <a href="frame.html" target="_top">frame.html</a><br><br> <a href="frame2.html" target="_top">frame2.html</a> </body> </html> 参考サイト↓ http://www.tohoho-web.com/html/frameset.htm

quads
質問者

お礼

回答ありがとうございます。 説明不足でしたが、JavaScriptの変数などを用いて同じソースで任意のページに対応するものを教えていただきたいです…。 フレーム解除の方では、フレームを跨いでもう一方のフレームに表示されているページのURLを取得して、そのURLをtarget="_top"で開くようなリンクの記述と言うのでしょうか…。 恐れ入ります…。

関連するQ&A

  • フレームで

    フレームで <FRAMESET COLS="40%,*"> <FRAME NAME="Menu" SRC="index.html" TITLE="Menu"> <FRAME NAME="Content" SRC="???.html" TITLE="Content"> </FRAMESET> で、URLの部分で、二つ定義するのですが、この場合、縦に二つindex.html,???.htmlと、表示されますが、 ここで、メインのindex.htmlに、この両者(index.html,???html)を表示させたいのですが、 つまり、現在ある(index.html)にフレーム付けで、 ???.htmlを付け加えて、index.html.???.htmlと表示させたいのですが・・・ indexファイルに、index・???をフレームすると、indexが 現ページなので、???のみの表示になります。 わかりにくいかもしれません^^ ファイル名を変えるしかないでしょうか?

    • ベストアンサー
    • HTML
  • 固定フレームのついたフレームページにリンクするには?

    メモ帳でホームページを作っています。初心者です。 メニューページにはフレームを使わず、 コンテンツ用ページを二つのフレームを使って、上部に各コンテントファイル、下部にメニュー(各コンテント名を一覧表示)が表示されるようにしています。下部フレームは固定フレームにしたいと思っています。 メニューページで各コンテント名をクリックしたとき、 上部にそのコンテントファイル、下部に固定メニューファイルの表示されたフレームページへリンクさせたいのですが、この方法がわかりません。 初めは、フレームページにアドレスを付けてリンクすればいいのよねー、と試みたのですが、そうすると全てのフレームページ、つまり上部フレームにそれぞれのコンテンツファイルが表示され、下部にメニューファイルが表示されたフレームページのひとつひとつにアドレスをつけないと、リンクできないのでは?と疑問がわきました。 しかし、それではフレームページの固定メニューファイルの各コンテント名をクリックしたときに、上部フレームにはコンテンツファイルのみでなく、各コンテンツのフレームページが表示されてしまい、下部の固定フレームが増えていって(泣)変なことになってしまいますよね。 フレームページ間のリンクは、その固定フレームの各コンテント名のtargetを上部フレーム名にすればよいので問題ないのですが・・・。 メニューページもフレームページにすれば解決するでしょって感じですが^_^;、メニューページには各コンテント名が載せてあるのに下にも同じ項目を並べるのはくどい気がして、ちょっと・・・と思いまして。 ご存知の方よろしくお願いします!

    • ベストアンサー
    • CSS
  • 違うフレームのURLを取得したい

    いつもお世話になっております。 上下でフレームが分かれていて、上にメニュー、下に内容が表示されます。 下に表示されているURLによって、上のメニューのボタンの色をVBScriptのIF文を使って変えたいと思っています。 そこで、下のフレームに表示されているURLを上のフレームで取得したいのですが、どうしたら実現できるでしょうか。 JavaScriptでparent.下のフレーム名.location.hrefとすれば、URLを取得できることまでは調べたのですが、JavaScriptからASPに値を渡す方法が分かりませんでした。 ASPだけでURLを取得する方法か、JavaScriptで取得した値をASPに渡す方法のどちらかをご存知の方がいらっしゃったら教えてください! よろしくお願いいたします。

  • フレーム内でしかも、左側の細い部分にあるか判別

    そのページがフレーム内でしかも、よくある左側のメニューのページのような細い部分にあるか判別するというような方法はありますか。 フレームの中ならという部分は if (self != top) { top.location.href = self.location.href; } でよいかと思うのですが、左側とかそのようなことはなんらかのテクニックで取得できますか。

  • フレーム内のページ表示について

    メニューとメインでフレームのページを作っています。 メインページに直接訪れた人の為に、「メニューが表示されない場合はクリック」とフレームページのリンクを作ってあります。<A href="index.html" target="_top"> フレームページ(メニュー)は表示されるのですが、次にメニュー項目をクリックすると、全画面でメインページがでてしまい、またメニューが見えなくなってしまいます。 ふつうにフレームページ(index.html)を開いた場合は、ちゃんとメインフレーム内に各ページが表示されるので、なぜメインページのリンクからだとそれができないのかがわかりません。 フレーム名はメニュー=menu メイン=mainとして、メニュー各項目のリンクは<A href="001.htm" target="main">としてあります。 説明が下手でごめんなさい。よろしくお願いします。

    • ベストアンサー
    • HTML
  • フレームが現在表示しているURLを調べたい

    「フレームが現在表示しているURLを調べたい」 でもうまくいかないので質問しました。 1.説明 次のようにフレーム定義をします <FRAMESET cols="60%,*"> <FRAME src="l.html" name="l"> <FRAMESET rows="85%,1*"> <FRAME src="ru.html" name="ru"> <FRAME src="rb.html" name="rb"> </FRAMESET> このとき、JavaScript で フレーム ru が表示している URLを以下のJavaScriptを実行すると ru.html が返ります。 →この結果は納得できます。(^^)/ document.write(window.top.ru.location.href) ru.html 次に、フレーム l のHTMLのなかで以下のようにターゲットをruにして、リンクをつくり、それをクリックすると ru の表示内容は当然ながら http://www.asahi.com に切り替わりました。 <TR><TD><A href="http://www.asahi.com" target="ru">朝日</A></TD></TR> ここで、再び以下の命令を実行すると、こんどは、 「エラー:書き込みができません」が出てしまいます。 →http://www.asahi.com が返ることを期待していたのですが (-_-;) document.write(window.top.ru.location.href) エラー:書き込みができません 2.質問 ここで質問なのですが、フレームが現在表示中のURLを得るための記述方法をご存知の方 教えていただけないでしょうか?

  • location=URLと、targetを使ってのフレームの解除について

    いつもお世話になっています。 target(フレーム解除)についてのことなんですがよく分かりません。 今の状況は、JavaScriptのlocationを使ってURLにリンクを貼っているのですが、それらのページはフレームでできています。 指定したURLにジャンプするときにフレームを解除したいのですがどうしたらいいんでしょうか? HTMLを使ってのフレーム解除ではなく、JavaScriptを使ってのフレームの解除を教えていただきたいです。 もし、不明な点がございましたら補足させていただきますのでよろしくお願いいたします。

  • フレームのことで

    今、作っているサイトでは縦2分割のフレームを利用しているんですが ちょっと困っています。 それは、左側の小さい方のフレームにサイトの主なメニュー(リンク)を 置いているんですが、そのリンク先が大きいほうのフレームに 表示させたいのですが、小さいフレームにリンク先が出てきてしまいます。 小さいフレームにある方のリンク先を大きいフレームの方に 表示させるにはどうしたらいいですか? ちなみに、フレームは以下のタグを使っています。 どんなタグをどこに書き足したらいいのか、教えてください。 <FRAMESET COLS="25%,75%"> <FRAME SRC="menu.html" NAME="main.html"> <FRAME SRC="main.html" NAME="main.html"> </FRAMESET>

  • 多重になるフレームを制御し、表示させたい!?

    考えているフレームは、フレーム名f上、f下があります。 この状態で、f上またはf下のハイパーリンクで、詳細表示の為に、f下に更に別のフレームを読み込んでいます。 この時に所定のページをf左、f右に指定して表示したいのです。 しかしf下に表示させるフレームのURLを読み込んでしまうと、f左、f右の指定が、そのURLに書かれているものになってしまいます。 特にf右のURL指定をリンクによって変更したいので、下記のようなJavascriptではうまく表示が出来ませんでした。  parent.f下.location.href=(フレーム下をf左、f右に分けるURL(1))  parent.f右.location.href=(フレーム下の右に表示させたいURL(2)) (これを実行すると、'parent.f右.location.href'はオブジェクトではありません、とのメッセージが出る。  抜けると、(1)のファイル内に書かれてあるURLがそのまま出てしまう。 あらかじめ、最初から3つフレームに分割しておけば良いのかもしれませんが・・・) そもそもこの様な多重となるフレーム名への読み込みURL指定をするのは無理なのでしょうか。 あまり複雑になるのでは更新などの際に複雑になってしまい障害となりますので、断念せざるを得ませんが、何か良い方法があるのでしょうか。  説明がうまく出来ませんが、詳しい方がいらしたら、よろしくお願い致します。

  • 別windowのフレーム内のページを入替え可能?

    ある情報を提供しているwebページを収集してリンク集にしています。 ロボット型の検索で「url2」を見つけても、トップページへのリンクが なく、上位ディレクトリを辿っていくと、url0 (frameset) の中で frame name="xxx" に表示されるようになっているケースがあります。 (直リンク禁止を表明していない公式サイトを収集対象にしています) そんなサイトに限って (?)、トップページ url1 から目的の url2 までの ナビゲーションが分かりにくかったりします。url0 にリンクを張るべき なのは重々承知していますが、name="xxx" のフレームに指定されている url1 の代わりに url2 を表示させるリンクは不可能でしょうか? 初心者scriptでフレーム xxx に表示されたのは、framesetで指定された url1のままでした。構文↓の間違えか、もともと不可能か、ご教授ください。 window.open("url0", "window2"); window2.xxx.location.href="url2";

専門家に質問してみよう