- ベストアンサー
iframe内へのリンクについて
現在、iframeを使ったページを運用中です。 現在はtop.htmlの中にiframeがあり そのiframeの中では、ページA・ページB・ページCとあります。 top.htmlページからは、ページA・ページB・ページCそれぞれ移動できます。 これを他のページから直接ページB(top.htmlの入れ子になった状態で)を表示させたいのですが可能でしょうか? ○abc.html ○top.html(本文とiframeページA) -ページA.html -ページB.html -ページC.html abc.htmlからページB.htmlを表示したい
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
探せば出てくると思いますが、どんなキーワードで検索したらいいかわかりませんので、サンプルコードを書いてみます。 ようするに top.html?A の?以降を調べてiframeに入れています。 エラーチェックは最低限だけ。動作未検証です。 abc.html <a href="top.html?A>ページA</a> <a href="top.html?B>ページB</a> <a href="top.html?C>ページC</a> top.html <script> window.onload=function(){ s=location.search; if(!!s && s.substring(0,1)=='?'){ s=s.substring(1,s.length); } if(!s){ return; } document.getElementById('ifr').src=s+'.html'; } <iframe id="ifr" src="A.html"></iframe> ページの一部分(<iframe>の内容だけ)が変わっていても、気づかれない可能性もありますし、 こういうリンクの仕方はアクセシビリティーの観点でいえばあまり良くないと思います。 スクリプトを使いたくなかったら、めんどくさいですが、 <a href="top_A.html">A</a> <a href="top_B.html">B</a> <a href="top_C.html">C</a> として、 top_A.html <iframe src="A.html"></ifarme> top_B.html <iframe src="B.html"></ifarme> top_C.html <iframe src="C.html"></ifarme> と、全部個別に作っていくのが確実かと思います。
その他の回答 (2)
- leap_day
- ベストアンサー率60% (338/561)
CGIファイルだと要望どうりのことが出来るんですけど・・・html文書だとわからないな~~ 参考までに <<abc/html>> <a href="top.cgi?value=A">Aページ</a><br> <a href="top.cgi?value=B">Bページ</a> top.cgi?***="*" *のところは好きなように変えれます <<top.cgi>> if($in{'value'} eq "A"){ $inline="./A.html"; } elsif($in{'value'} eq "B") {$inline="./B.html"; } print "<iframe src='$inline' name='***' width='***' height='***' scrolling='auto' noresize></iframe>\n"; $inlineは$****のように好きなものに のようにすればabc.htmlでAページ(Bページ)をクリックするとtop.cgiに画面が変わってiframe内もAページ(Bページ)に変化します
お礼
そうですね、CGIでの動作は検討しましたが、以前別のサイトで使ったところそれ以降のページがクロールされなくなり使っていませんでした。(原因はまったく見当もつかないのですが・・・) talooさんの仰るように個別に作っていくことにします(かなり面倒ですが)。 みなさま、ありがとうございました。
- kappa-pa
- ベストアンサー率49% (101/206)
親フレーム以外が表示された時でもフレームセットを表示させる方法ですか?。JavaScriptなどを利用すると可能だと思います。 例) <SCRIPT TYPE="text/JavaScript"> <!-- if (window == top) { top.location.replace("top.html"); } //--> </SCRIPT> このジャバスクリプトを親フレーム以外の各ページへ入れてみたらどうでしょう。 また、こちらのスクリプトはどうかな? 例2) <SCRIPT language="JavaScript"> <!-- function Ref(){ if (document.referrer != " top.html"){ parent.top.location.href='top.html';} } // --> </SCRIPT> 過去ログにもありましたね。 http://okwave.jp/qa315500.html cookieを使用したJavaScript http://okwave.jp/qa735196.html 自動的にジャンプ(ジャンプ先に<FRAMESET>タグを記述していないファイル(URL)を指定すると処理がループに陥るので注意) http://www.geocities.co.jp/Playtown-Domino/4598/
お礼
回答ありがとうございます。 例1の場合ですとtop.htmlが表示されることですね。インラインフレームでページA.htmlを表示しているので必ずその「top.html+ページA.html」が表示されます。 他のページから直接(「top.html+ページA.html」を経由しないで)「top.html+ページB.html」を表示したかったのですが。 例2は、<frameset>タグがないとループしちゃうんですね。 そうなると現状のインラインフレームではダメということですよね。 フレームでもう一度試してみます・・・
お礼
すいません、検証中(フレームページで試していました)で御礼が遅れてしまいました・・・ やはりスクリプトでの動作は(できるだけ)控えておりました。 面倒ですが、仰るように個別に作っていくのが無難かもしれません。 折角コードまで書いていただいたのにすいません・・・。