人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

HTMLのフレーム構造についてちょっと研究しています。
(フレーム構造のサイトをこれから作りたい、というわけではないです)。

「フレームの内部に読み込まれるべきページが単独でリクエストされた場合は、
強制的に親フレームを読み込ませる」

上記動作は、下記のようなJavaScriptで実現できるということが分かりました。

<body onLoad=”if (parent.frames.length==0) top.location=’http://www.******.com/index.html’;”>

ただ、このスクリプトだと強制的にトップページ(index.html)に飛ばされることになりますよね。


そこで質問なのですが、次のような動作は何らかの手段で実現可能でしょうか?

「フレーム内部に読み込まれるべきページが単独でリクエストされた場合は、
強制的に親フレームを読み込ませた上で、フレーム内にリクエストされた
ページを表示する」


”技術的に不可能”というご指摘もOKですが、ポイントはお一人目のみとさせて下さいm(_ _)m















●質問者: rionissleeping
●カテゴリ:コンピュータ
✍キーワード:HTML INDEX JavaScript うご サイト
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● ke_ishi
●25ポイント

http://homepage2.nifty.com/BASH/WWW/JavaScript/qs.html

JavaScript集(QueryStringの受け渡し) -Bash Homepage-

top.locationに、getでパラメータをふかしてはどうでしょうか。

index.htmlがフレーム、フレーム内ページが001.htmlだとしたら、top.location=’http://www.******.com/index.html?page=001’とかで飛ばします。

index.htmlでのgetパラメータの受け取り方は参考URLを見てください。

◎質問者からの返答

ご回答ありがとうございます。

へぇ、通常のHTMLドキュメントにもパラメーターが渡せるんですね!

大変勉強になりました!


2 ● いのくに
●10ポイント

http://www.tohoho-web.com/html/frameset.htm

<frameset> - フレームセット

技術的には不可能ではありません。


たとえば、親フレームを予想される子ページ分だけ用意すれば意図する機能ができます。


子ページを

sub1.html

sub2.html

sub3.html


親フレームを

oya1.html

oya2.html

oya3.html


とすれば、


sub1.html には <body onLoad=”if (parent.frames.length==0) top.location=’http://www.******.com/oya1.html’;”>

sub2.html には <body onLoad=”if (parent.frames.length==0) top.location=’http://www.******.com/oya2.html’;”>

sub3.html には <body onLoad=”if (parent.frames.length==0) top.location=’http://www.******.com/oya3.html’;”>


としておいて、


oya1.html には

<frameset rows=”10%,*”>

<frame src=”menu.html” name=”menu”>

<frame src=”sub1.html” name=”sub”>

</frameset>


oya2.html には

<frameset rows=”10%,*”>

<frame src=”menu.html” name=”menu”>

<frame src=”sub2.html” name=”sub”>

</frameset>


oya3.html には

<frameset rows=”10%,*”>

<frame src=”menu.html” name=”menu”>

<frame src=”sub3.html” name=”sub”>

</frameset>


というようにすれば、意図する機能が一応できあがります。

◎質問者からの返答

ご回答ありがとうございます。

質問の仕方が悪かったようですみません、親フレームは一つ(トップページ)という前提で考えています。


3 ● upride
●25ポイント

http://www2s.biglobe.ne.jp/~club_tom/java-kouza/kihon/object/ja-...

location.searchでクエリ文字列取得できます(?page=001.htmlとか)

その値を元に遷移先を決定して(?page=とか余計なものを取る)

frameタグのsrcにセットすれば宜しいと思います

◎質問者からの返答

ご回答ありがとうございます。

1.サブページからパラメータとして現在URLを送信

2.フレームページでパラメータを受信してURL取得

…まではできました。

が、受信したURLをはめ込んでframeを定義するところが上手くいきません。

-------------------------

<frameset cols=”200,*”>

<frame name=”left” src=”menu.html”>

<script language=”JavaScript”>

<!--

for (i in arr) { //arrがパラメータ名/値を入れた配列

document.write(”<frame name=left src=” + arr[i][1] + ”>”);

}

// -->

</script>

</frameset>

-------------------------

JavaScriptって、<head>か<body>タグの中にしか書けないのでしたっけ…?

すみません、自己解決しました!

ありがとうございました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ