直リンクされた場合のフレームセットのリンクを変更したい

このQ&Aのポイント
  • 直リンクされるとレイアウトが崩れるフレームセットのリンクを変更する方法について教えてください。
  • 現在は<body onLoad="if (top == self) { location.replace('index.html') };">というタグでフレームセットのページにリロードしていますが、直リンクされた場合に別のページに飛ばす方法を知りたいです。
  • JavaScriptやCGIを使用して直リンクされた場合に指定したページに飛ばす方法を教えてください。
回答を見る
  • ベストアンサー

直リンクされた場合のフレームセットのリンクを変更したい

フレームセットを利用していると直リンクされると、レイアウトが崩れて嫌なので普段は <body onLoad="if (top == self) { location.replace('index.html') };"> このタグで強制的にフレームセットのページであるindex.htmlにリロードしています。 でも、この場合だとindex.htmlにフレーム設定をしているA.htmlとB.htmlしか表示できません。 これを、直リンクされた場合に強制的にindex.htmlに飛んで、さらにフレームセットのページをA.htmlとC.html(直リンクされたページ)に変更させたいのです。 なんとなくJavaScriptで出来るかな思いましたが、CGIでも構いませんので、よろしくお願いします。

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

  • ベストアンサー
  • mrumesuke
  • ベストアンサー率45% (254/557)
回答No.2

この問題を上手に解決してるな~と思ったのが、参照URLの「こよみのページ」です。 外部JavaScript"sv_env.js"とcgi"directjp.cgi"を組み合わせて解決しているようです。 どちらもフリーソフトとして公開されているわけではないのでここにソースを転載するわけにはいきませんが、view-sourceでソースを表示して仕組みを調べてみてください。(cgiのソースは見られませんが)

参考URL:
http://koyomi.vis.ne.jp/
momonojoh
質問者

お礼

ご解答ありがとうござ合います。 まさに!このHPの仕組みを作りたかったんです。 「sv_env.js」を見る限りでは、CGIにリンクするためのJavaScriptのようですね。 「directjp.cgi」が肝心な所のようですが見れないのが残念ですね。 多分、index.htmlを表示させた後、リンク元アドレスを取得してフレームセットを書き直すCGIなのだと思います。 とりあえず、CGIのカテゴリでも聞いてみます。 本当にどうもありがとうございました。

その他の回答 (2)

  • s_doc
  • ベストアンサー率24% (93/377)
回答No.3

JavaScriptだけの解法です。 ---- C.html ---- if(top == self) {location.href = "/index.html?" + location.href} ---- index.html ---- (top) window.frames[1].location.href = location.href.substring(1); こんなのいかが? 厳密にはトップから正しく入ってこられたときループしないように、 index.htmlを上手く処理してください。

noname#6248
noname#6248
回答No.1

カテゴリがJavaScriptなので… ●イヌでもわかる… http://www.red.oit-net.jp/tatsuya/java/referrer.htm このページより抜粋します。 <script language="JavaScript"><!-- myHome="http://www.provider.jp/yourHP/index.html"; if (document.referrer != myHome){ // リンク元がトップページじゃない location.href = myHome; // トップページへジャンプ } // --></script> 注意として、『リファラ実験』のページも併せて書いておきます。 http://www.teria.com/~koseki/memo/referrer/ 誤作動要因等の対応のために… まぁ、JavaScriptを無効にされていたら元も子も無いのですけどね…

momonojoh
質問者

お礼

早速のお返事ありがとうございます。 抜粋されたスクリプトは、たぶん私が今使っている JavaScriptと同じで、トップページへジャンプはしても、そのフレーム内までは対応してない物のようです。 わざわざ調べていただきありがとうございました。 もう少し調べてみます。

関連するQ&A

  • フレームセットのリンクを変更するCGI

    フレームセットを利用していると直リンクされると、レイアウトが崩れて嫌なので普段はJavaScriptで <body onLoad="if (top == self) { location.replace('index.html') };"> このタグで強制的にフレームセットのページであるindex.htmlにリロードしています。 でも、この場合だとindex.htmlにフレーム設定をしているA.htmlとB.htmlしか表示できません。 これを、直リンクされた場合に強制的にindex.htmlに飛んで、さらにフレームセットのページをA.htmlとC.html(直リンクされたページ)に変更させたいのです。 index.htmlを表示させた後、C.html(直リンクされたページ)のアドレスを取得してフレームセットを書き直すCGIなのだと思いますが、このようなCGIのフリーなどありましたら教えてください。 JavaScriptとCGIの混合技らしいので、JavaScriptカテゴリにも書き込んでおります。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=745359

    • ベストアンサー
    • CGI
  • リンク毎にフレームセットの内容を変えたい

    まず、フレームを使用していないページがありまして(index.html)、そのページ上のリンクをクリックすると、フレームページに飛ぶのですが、クリックされたリンク毎にフレームセットの内容を変えたいのですが、なかなかいい方法が見つかりません。 もう少し具体的に説明させていただきますと、 ページ1(index.html)上の各リンクをクリック リンク1→A.hrml+B.html+C.htmlのフレームページ リンク2→D.html+E.html+C.html リンク3→F.html+G,html+C.html ・ ・ ・ という感じです。 なにか、良い方法がありましたら、教えていただけたらと思います。 どうかよろしくお願いします。

  • リンク先がフレームセットの場合で・・・

    A.htmlというページからB.htmlにというページの中盤にある記事Xにリンクする場合 <a href="B.html#X">記事Xへ</a> と書きますよね? では、A.htmlページからフレームセットB.html(フレームはC.htmlとD.htmlに分かれている)、にリンクしてフレームDの中盤にある記事Xを表示させる方法はあるのでしょうか? わかりにくい文章ですみませんが御願いいたします

    • ベストアンサー
    • HTML
  • フレームセットを使用しているページへのリンク

    リンクの設定で困っています。 特定のページの特定の場所へリンクを張りたいのですが、リンク先がフレームセットを使用しているため、レイアウトがくずれた(フレームがなくリンクを指定した右側のページだけの)状態でページが表示されてしまいます。 フレームを使用していない別ページから、リンク先のフレームも生かしたまま、かつ右ページの特定の場所を表示するようにリンクを張る方法はありませんか。 A.htmlからB.htmlへリンクを設定。ただしB.htmlはフレームを使用し、左にL.html、右側にR.htmlを表示させている。A.htmlからリンクをつけるのはR.thmlの#xxx。ただしこの設定だと左に表示されてほしいL.htmlが表示されない。きちんとフレームも生かされた状態で、右側は#xxxまで移動させたいということです。 良い解決法を教えてください。

  • 直リンクされた場合のフレーム表示を崩したくない→どうやってループを避けるか??

    過去に何回か同じような質問内容がありましたので拝見しまして自分でも色々と試してみたのですが、 <script language="JavaScript"><!-- myHome="http://www.provider.jp/yourHP/index.html"; if (document.referrer != myHome){ // リンク元がトップページじゃない location.href = myHome; // トップページへジャンプ } // --></script> という記述で解決出来ました。 が、しかし、今度はindex.htmlから入り、上の記述をしたページへのリンクをクリックすると、フレーム内にまたindex.htmlがループしてしまうのです(ToT)これはどうやって防げば良いのでしょうか??あるいは、上の記述では防げないのでしょうか??お手数ですが回答よろしくお願い致します!

  • フレーム内直リンの際に、フレームを付けて表示

    フレーム内のアドレスに直リンされたときに、フレームを表示してその中に表示させるという方法を検討しています。 具体的には、index.htmlというページがあり、その中に、top.htmlが入っていて、menu.html、main.html、という二つのフレーム(ifream)が入っています。 menu内リンクを選択することで、mainの中が変化するというページです。 このときmainのフレームに直リンされると、メニューが表示されず、困ったことになってしまいます。 もちろん、その直リンページの中に、「フレームページですのでトップから入りなおしてください」と促せば、できないことはないのですが、それらを自動で判断させ行いたいです。 考えとしてはリンク元が自サイトのアドレス以外だった場合は、条件判断によりindex.htmlを表示させ、menu.htmlの中に直リンしてきたファイルを表示させればいいと思うのですが、具体的にどのようにすればいいのか分かりません。 何か良い方法・アイデア等ありましたらご教授お願いします。

    • ベストアンサー
    • CSS
  • フレームへのリンク

    フレームのあるページへリンクを貼りたいのですが、 たいていリンクを貼るとトップページですよね、それをリンクで飛んできたときに違うページにしたいのですが可能ですか。 たいていは index.htmlの中に <IFRAME src="00.html" name="000"></IFRAME> となっていたときindexに飛ぶと フレームには00.htmlが見えますよね。 そうではなく01.htmlを最初から見せる方法はあるのですか。 普通に来た方には00.html サイト内のリンクの場合01.htmとしたいです。

  • フレームの中のリンク

    あるページが 上  左下  右下 の3つの フレームにわかれています 左下 の フレームに リンクをはり フレームのないページに移動したいのですが <a href="hoge.html" target="_self">とすると そのフレーム内に リンク先のページが表示されます フレームのページからノンフレームページに 移動したいときにはどのように かけばよろしいのでしょうか

    • ベストアンサー
    • HTML
  • 直リンクを防止したいのですが?

     私のページは、基本的にはリンクフリーなので仕方がないと言えばそれまでなんですが、あまりに個別ページへの直リンクが多いので、初めて各ページに直接来た場合はトップページに来るようにして二度目からなら直リンクでもOKみたいな事はできますか?  当然トップページ(フレームです)から呼んだ場合は、初めてでもそのまま表示できるようにしたいのですが。 以前他の方のページで似た機能を見たのですが、色々探したのですがみつかりません。 同様な機能を解説しているページのアドレスだけでも結構です。 よろしくお願いいたします。

  • 直リンクとは。

    具体的にどういうことなのでしょう。 例えば<A HREF="私のサイトのアドレス"> で、 同ページでページが開くことを直リンクと言うと思うのですが。 逆に<A HREF="私のサイトのアドレス"TARGET="_Blank">という タグで別ページで開くのがいいと思うのですが。 先日相互リンクしてくれたサイトから私のサイトへ行くと、 別ページは開かず同ページで開いていました。 これは直リンではないのでしょうか? 相手先にそのことを申し出ますと、私のサイトに行く前にそのサイト内のリンク集のページでいったん別ページが開いているんです。 パソコン上ではその相手先のサイトのページが2枚開いていることになります。ややこしいですが、すいません。 で、ここからさらに私のサイトへのリンクに、"TARGET="_Blank"をつけるとパソコン上に3枚のページが開くことになるというのです。 それ自体はわかるのですが、何より気になるのはこれは直リンクではないのかということです。 直リンクでさえなければ何も問題ないと思っているので、 でもこれが直リンクか判断できないので、困っています。 御存知の方教えて下さい。よろしくお願いします。

    • ベストアンサー
    • HTML

専門家に質問してみよう