• 締切済み

リンク元フレームからの脱出

自分のサイト http://www.***.ne.jp/xxx/ がリンク元フレーム内に 表示されるのを回避しようと、以下のスクリプトを<head>に書いて みました。NN4.7とIE5.0でテストしましたが、入れ子からの脱出はできず、 それ以降に書いたスクリプトも実行されません。添削していただけませんか。 <script language="JavaScript"> <!-- yourTop = window.top.location.href; if ((yourTop.substr(0,4) == "http") && (yourTop.substr(11,13) != "***.ne.jp/xxx")) { window.top.location.href = "http://www.***.ne.jp/xxx/"; } //--> </script>

みんなの回答

回答No.4

#1です. 考えました. 再挑戦お願いします. <script language="JavaScript"> <!-- self.title="oveobo" //←何でもよい if(self.title != top.title){ top.location = self.document.location; } //--> </script> いかがでしょうか? IE,ネスケOKでした.

回答No.3

#2さんへ #1です. if (yourTop.match("http://www.***.ne.jp/xxx")!=0) { window.top.location.href = "http://www.***.ne.jp/xxx/"; だと,無限ループしませんか? URLの最後に「/」が有る無しで... また,URL入力するときですが, 人によって最後に「/」つける人とつけない人いますよね. その対応しないといけないですね.

loveobo
質問者

補足

#2さんへの補足要求かもしれませんが・・・ 私が教本を見た範囲では、matchの引数をダブルクォート文字列とする例を 見つけられず、#2さんのアドバイス(!=で0と比較するあたり)を理解しきれて いません。それは別として、質問欄私案でsubstrによる取得で最後の「/」を 除いたのは理由があります。 このスクリプトはフレーム内のintro.htmlに埋めていますが、続いて 「yourTop.substr (yourTop.length -10, 5)」でファイル名を取得、 フレーム版の「index」 か、フレーム解除の 「intro」かで、 ナビゲーションの記述「document.write("*****")」を振り分けています。 (<noscript>にも代替テキストを入れてます) この機能は(入れ子でなく読みに行けば)作動していますが、元質問のif文を 「yourTop.substr(11,14) != "***.ne.jp/xxx/" 」で分岐させようとしたら、 ファイル名の取得が上手くいきませんでした(NN4.7のみでテスト)。 #3さんのご懸念とは別問題ですが、末尾のスラッシュは何となく恐いです。

noname#5841
noname#5841
回答No.2

<script language="JavaScript"> <!-- yourTop = window.top.location.href; if (yourTop.match("http://www.***.ne.jp/xxx")!=0) { window.top.location.href = "http://www.***.ne.jp/xxx/"; } //--> </script> これで、どうでしょう?

loveobo
質問者

お礼

アドバイスありがとうございます。本日はテストできそうにないのですが・・ #1補足に書いたように、ダウンロードした読者に負担を掛けないために、 httpでないなら読み飛ばすようにしたいのですが、質問欄の私案との本質的な 違いはmatch(引数は正規表現でしょうか?)で条件分岐させるところですね。 正規表現の概念をイマイチ理解していないのですが、勉強してみます。

回答No.1

私も同じ事で悩んで、 下記で解決しました。 自分のページもフレームになってたらだめかな? <script language="JavaScript"> <!-- if (top.frames.length != 0 ) top.location = self.document.location; //--> </script>

loveobo
質問者

補足

早々のご回答ありがとうございます。 せっかくリンクして下さった見ず知らずの方にtarget指定をお願いする のも申し訳なく、自分のhtmlに埋め込もうと思ったのです。 お書きのスクリプトは「window.topにフレーム指定があったら、 topを自ページのurlにする」ですね。私はフレームを第一選択、 読者によるフレーム解除はOKという構成にしています。 「httpであって(ダウンロードした方のfile:///では作動しない) urlが自サイトでないなら、topを自サイトのフレームセットに」 と考えたのですが・・・

関連するQ&A

  • フレーム内リンクを禁止したい

    表題のとおり、フレーム内へのリンクを禁止したく <script language="JavaScript"> <!-- if (parent.location.href != window.location.href) parent.location.href= window.location.href; //--> </script> を<head>と</head>の間に入れてみましたが、「書き込みができません。」とエラーになります。 どこか間違っているのでしょうか。

  • ウインドウ元のURLをフレームごとかえる

    小ウインドウを開いて、URLをクリックすると元のページのURLがかわるという方法を教えてください! 下記の書き方だと、フレームの中に新しいページが表示されてしまいます。 フレームごと書き換えるには、どうやって書けばよいのでしょう? <script language="javascript"> <!--// function ctrlwin() { window.opener.location.href="http://www.××.html"; window.close(); } //--> </script>

  • Mac-IEでの複数フレームのリンク

    02-01-18のkyappunさんの質問と内容的には同じなのですが。 フレーム使用のホームページで、複数フレームを同時に変更したいのですが、MacのIE(5.0)では、どうしても動作しません。 ※WinのIE6.0、NN4.7、NN6.0、MacのNN4.7では動作します。…が、MacのIEでも 動いてほしいのです。 ソースは、以下のようにしました。 (このソースには、こだわってないです) 解決法をご存知の方がいらっしゃいましたら、どうかよろしくお願いします。 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <title>フレームのリンク</title> <SCRIPT Language="JavaScript"> <!-- function changepage(top,bottom) {     parent.head.location.href=top;   parent.main.location.href=bottom; } //--> </SCRIPT> </head> <body> <form> <a href="javascript:changepage('head2.html','main2.html')">リンク1</a> <br> <a href="javascript:changepage('head3.html','main3.html')">リンク2</a> </form> </body> </html>

    • ベストアンサー
    • Mac
  • ブラウザが判別出来ない。

    お世話になっております。 JavaScriptの本を購入しました。 その本にブラウザ判定のスクリプトが掲載されており、それをそのままアップしたところ、私はIE6なのにIE4と判別されてしまいました。 下記がそのスクリプトです。 ちなみに、私はXPのIE6です。 このスクリプトはこれで完璧なのでしょか? また、出来ましたら、このスクリプトを試していただけたらと思うのですが・・・よろしくお願い致します。 <script language="JavaScript"> <!-- if( navigator.appVersion.charAt(0)==4){window.location.href = "nn4.html"} // NN Ver4 の場合 if( navigator.appVersion.charAt(0)==5){window.location.href = "nn5.html"} // NN Ver5 の場合 if( navigator.appVersion.charAt(0)==6){window.location.href = "nn6.html"} // NN Ver6 の場合 } if( navigator.appName.charAt(0)=="M"){ if( navigator.appVersion.charAt(0)==2){window.location.href = "ie2.html"} // IE Ver2 の場合 if( navigator.appVersion.charAt(0)==3){window.location.href = "ie3.html"} // IE Ver3 の場合 if( navigator.appVersion.charAt(0)==4){window.location.href = "ie4.html"} // IE Ver4 の場合 if( navigator.appVersion.charAt(0)==5){window.location.href = "ie5.html"} // IE Ver5 の場合 if( navigator.appVersion.charAt(0)==6){window.location.href = "ie6.html"} // IE Ver6 の場合 } //--> </script> <noscript>JavaScript を使用しています。JavaScript を有効にしてください。</noscript>

  • (CGI)お気に入り登録やアドレス直打ちを防ぐには?

    フレームページ等を使用していてフレーム内のアドレス直打ち、それによるお気に入り登録を防ぐには以下のタグが有効ですよね?↓↓ <SCRIPT language="javascript"> <!-- if (!document.referrer){top.location.href="http://************";} //--> </SCRIPT> または、 <script language="JavaScript"> <!-- if(self ==top){location.href = "http://*****";} // --> </script> この「アドレス直打ち、お気に入り登録を防ぐ機能」をCGIで表す事は可能ですか? 可能ならば、とどのようになりますでしょうか? CGIで作成した掲示板の中に挿入して防ぎたいのですが・・ 宜しくお願いしますm(_ _)m

    • ベストアンサー
    • CGI
  • location.hrefを使用したFRAME表示

    location.hrefを使ったjavascriptを作ろうとしています。 <script type="text/javascript"><!-- location.href = "http://www.yahoo.co.jp/"; // --></script> の改良版として、http://www.yahoo.co.jp/をフレームの右側に 表示させたいと考えています。 (src使用ではなくjavascriptのlocation.hrefを使うことがMUSTです) <head> <script type="text/javascript"><!-- right.location.href = "http://www.yahoo.co.jp/"; // --></script> </head> <body> <FRAMESET cols="50%,50%"> <FRAME name="left" src="left.html"> <FRAME name="right" src="right.html"> </FRAMESET> </body> としてみましたがうまくいきません。 location.hrefはmetaタグ内でしか有効ではないにも関わらず right.の指示をメタタグ内部で指定していないことが原因かも しれません。 javascriptのlocation.hrefを使ってフレームの右側に 表示させる方法をご教授願います。

  • 複数のフレームに値を送るには

     フレームを使って分けた複数のフレームに値を送るにはどうすればいいでしょうか? <script type="text/javascript"> <!-- function func() { top.topFrame.location.href = "theme.php?ThemeID=$ThemeID"; top.leftFrame.location.href = "discussion.php?ThemeID=$ThemeID"; top.mainFrame.location.href = "infomation.php"; return false; } // --> </script> <?php <a href="#" onclick="return func()">$ThemeTitle</a> ?> では変数ではなく"$ThemeID"の文字列でしか行きません またこれから実装しますがPostで複数のフレームに値を送る方法もよければ教えてください よろしくお願いします

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

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

  • 別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";

  • 小窓を開きたい

    素人なので質問もきちんと出来ているかわからないのですが、よろしくお願いします。 HPトップページを開くと小窓(New Window)が開くようにしたいのです。 TopPageはフレームで分かれていて、どの部分に書き込めばプログラムが実行されるのかがわかりません。 小窓の大きさは、下記に示したように小さなものでよいのです。 <script Language="JavaScript"><!-- function newWin(){ window.open("開きたいファイルのアドレス","","width=196,height=176","scrollbars=no","location=no","menubar=no"); } //--></script>  これを<a href でプログラムを開くようなアドバイスがありましたが、どのようなことなのでしょうか?

専門家に質問してみよう