- ベストアンサー
親フレームのURLによって、条件分岐する方法。
具体的に書きますと、親フレ-ム「fr.html」のフレーム内で「A.html」を開いた場合と、それ以外の方法で「A.html」を開いた場合で、開いた瞬間に飛ばすページを分けたいのです。 注意)どこから開かれたかは関係なくです。ですから、window.openerは使わないと思います。 本当に初心者ですので、<head></head>の間にいれる、スクリプトをそのまま書いてくれると嬉しいです。 結構急ぎなので、(みなさんもそうでしょうが・・・) よろしくお願いします。
- みんなの回答 (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> がんばってくださいね。
その他の回答 (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などリファレンスとしては有名なので、手元に資料で詰まったときは、参照してみるのも良いかも知れません。
お礼
ありがとうございます。 >ここで親がいない場合、window.parentは自分自身を表すという不思議な結果に>なります。 へ~、勉強になりました。 それにスクリプトも解説付きでとっても分かりやすいです。 ただ、実は、 >もし、親フレームが特定のURLの場合だけ引っかけたいときは、 >「window.parent.location.href」の値で判定してください。 のやり方も知りたかったです・・・。 でも、本当にありがとうございました。 また何かあったらよろしくお願いします。サイトもチェックしておきます。
- a-kuma
- ベストアンサー率50% (1122/2211)
> 注意)どこから開かれたかは関係なくです。ですから、window.openerは使わないと思います。 > 本当に初心者ですので、<head></head>の間にいれる、スクリプトをそのまま書いてくれると嬉しいです。 opener がどうこう、と書いておいて、初心者とは言わせない :-) フレームの中に表示されているかどうかは、window.parent がキーになるんじゃ ないか、と。どうやったら、エラーを捕まえられるかなあ。 # 本当に、思い付かない… ああっ、帰りの電車に間に合わないっ! というわけで、スクリプトは勘弁。
補足
とりあえず、回答ありがとうございます。 window.parentについては、JavaScript辞典に載ってたもので・・・ (理屈がよく分からないので、完全な写し書きしかできません、、、) 「if」とか「window.parent」とか「=」とか「fr.html」 とかを、どうやって書けばよいか分かりません。 何方か詳しい説明お願いいたします。
お礼
もの凄くありがとうございます。 ハイ。僕が求めていたのはこれです。 >if(((parent.location).toString()).indexOf("fr.html")<0) このような方法があるんですか。勉強不足でした。 もう少しスクリプトと記述の仕方を覚えないとダメみたいですね。。 ですが、また、どうしても分からない事が出てきたらそのときは よろしくお願いします。 今回は本当にありがとうございました。 テストしてみて、上手く動作すれば締め切らせていただきます。