• ベストアンサー

親フレームのURLによって、条件分岐する方法。

具体的に書きますと、親フレ-ム「fr.html」のフレーム内で「A.html」を開いた場合と、それ以外の方法で「A.html」を開いた場合で、開いた瞬間に飛ばすページを分けたいのです。 注意)どこから開かれたかは関係なくです。ですから、window.openerは使わないと思います。 本当に初心者ですので、<head></head>の間にいれる、スクリプトをそのまま書いてくれると嬉しいです。 結構急ぎなので、(みなさんもそうでしょうが・・・) よろしくお願いします。

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

  • ベストアンサー
  • xruz
  • ベストアンサー率50% (72/143)
回答No.3

こんにちはnyaryomeさん、xruzです。 こんな感じでよかったでしょうか。 <html> <head> <title>a</title> </head> <script language="JavaScript"> <!-- if(((parent.location).toString()).indexOf("fr.html")<0) { this.location.href="index.html"; // 親URLにfr.htmlが無かったとき } else { this.location.href="ok.html"; // 親URLにfr.htmlが有ったとき } //--> </script> <body> a.html </body> </html> がんばってくださいね。

nyaryome
質問者

お礼

もの凄くありがとうございます。 ハイ。僕が求めていたのはこれです。 >if(((parent.location).toString()).indexOf("fr.html")<0) このような方法があるんですか。勉強不足でした。 もう少しスクリプトと記述の仕方を覚えないとダメみたいですね。。 ですが、また、どうしても分からない事が出てきたらそのときは よろしくお願いします。 今回は本当にありがとうございました。 テストしてみて、上手く動作すれば締め切らせていただきます。

その他の回答 (2)

noname#3852
noname#3852
回答No.2

nyaryomeさん、こんにちは。 window.parentまでたどり着いたのに、惜しいですね。 window.parentは、自分の親フレームを表します。 ここで親がいない場合、window.parentは自分自身を表すという不思議な結果になります。 自分自身とは、通常、window.selfで表します。つまり、window.parentがwindow.selfと一致すれば、親がいない独立したウィンドウ、一致しなければ、親フレームありとなります。 後は、この結果に基づいて、URLを変更すれば良くなります。 よって、こんな感じです。 <html> <head> <script laguage="JavaScript"> function func( ) {   var newURL = ""; // 移動先URL      // 親は自分か   if (window.parent == window.self)   {     newURL = "http://www.yahoo.co.jp" ;   }   // 自分ではなく他人です。   else   {     newURL = "http://www.yahoo.com" ;   }   // ジャンプ   location.href = newURL ;   // 何ミリ秒後かに移動したければ、下の方法を   // window.setTimeout( "location.href = '" + newURL + "'", 10000 ); } </script> </head> <!-- この画面を開いたとたんに関数funcを呼び出します --> <body onload="func( )"> </body> </html> もし、親フレームが特定のURLの場合だけ引っかけたいときは、「window.parent.location.href」の値で判定してください。 以下のURLは、HTML,JavaScriptなどリファレンスとしては有名なので、手元に資料で詰まったときは、参照してみるのも良いかも知れません。

参考URL:
http://tohoho.wakusei.ne.jp/www.htm
nyaryome
質問者

お礼

ありがとうございます。 >ここで親がいない場合、window.parentは自分自身を表すという不思議な結果に>なります。 へ~、勉強になりました。 それにスクリプトも解説付きでとっても分かりやすいです。 ただ、実は、 >もし、親フレームが特定のURLの場合だけ引っかけたいときは、 >「window.parent.location.href」の値で判定してください。 のやり方も知りたかったです・・・。 でも、本当にありがとうございました。 また何かあったらよろしくお願いします。サイトもチェックしておきます。

  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.1

> 注意)どこから開かれたかは関係なくです。ですから、window.openerは使わないと思います。 > 本当に初心者ですので、<head></head>の間にいれる、スクリプトをそのまま書いてくれると嬉しいです。 opener がどうこう、と書いておいて、初心者とは言わせない :-) フレームの中に表示されているかどうかは、window.parent がキーになるんじゃ ないか、と。どうやったら、エラーを捕まえられるかなあ。 # 本当に、思い付かない… ああっ、帰りの電車に間に合わないっ! というわけで、スクリプトは勘弁。

nyaryome
質問者

補足

とりあえず、回答ありがとうございます。 window.parentについては、JavaScript辞典に載ってたもので・・・ (理屈がよく分からないので、完全な写し書きしかできません、、、) 「if」とか「window.parent」とか「=」とか「fr.html」 とかを、どうやって書けばよいか分かりません。 何方か詳しい説明お願いいたします。

関連するQ&A