- 締切済み
リンク元フレームからの脱出
自分のサイト 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>
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- sakura_sakura
- ベストアンサー率56% (69/123)
#1です. 考えました. 再挑戦お願いします. <script language="JavaScript"> <!-- self.title="oveobo" //←何でもよい if(self.title != top.title){ top.location = self.document.location; } //--> </script> いかがでしょうか? IE,ネスケOKでした.
- sakura_sakura
- ベストアンサー率56% (69/123)
#2さんへ #1です. if (yourTop.match("http://www.***.ne.jp/xxx")!=0) { window.top.location.href = "http://www.***.ne.jp/xxx/"; だと,無限ループしませんか? URLの最後に「/」が有る無しで... また,URL入力するときですが, 人によって最後に「/」つける人とつけない人いますよね. その対応しないといけないですね.
<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> これで、どうでしょう?
お礼
アドバイスありがとうございます。本日はテストできそうにないのですが・・ #1補足に書いたように、ダウンロードした読者に負担を掛けないために、 httpでないなら読み飛ばすようにしたいのですが、質問欄の私案との本質的な 違いはmatch(引数は正規表現でしょうか?)で条件分岐させるところですね。 正規表現の概念をイマイチ理解していないのですが、勉強してみます。
- sakura_sakura
- ベストアンサー率56% (69/123)
私も同じ事で悩んで、 下記で解決しました。 自分のページもフレームになってたらだめかな? <script language="JavaScript"> <!-- if (top.frames.length != 0 ) top.location = self.document.location; //--> </script>
補足
早々のご回答ありがとうございます。 せっかくリンクして下さった見ず知らずの方にtarget指定をお願いする のも申し訳なく、自分のhtmlに埋め込もうと思ったのです。 お書きのスクリプトは「window.topにフレーム指定があったら、 topを自ページのurlにする」ですね。私はフレームを第一選択、 読者によるフレーム解除はOKという構成にしています。 「httpであって(ダウンロードした方のfile:///では作動しない) urlが自サイトでないなら、topを自サイトのフレームセットに」 と考えたのですが・・・
補足
#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さんのご懸念とは別問題ですが、末尾のスラッシュは何となく恐いです。