クリックした際に、_selfないし_top窓上で、<frameset>のページ”frame.html”を開き、かつ、フレームname=”up”、”menu”、”contents”のそれぞれに、top1.html(常に固定)、left2.html(常に固定)、hogehoge?.html(踏むリンクによって変化)を表示させたい場合。
hogehoge?をframe.htmlに渡すためのスクリプトをセットでお願いします。
【フレームを開くページ】
<html>
<body>
<a target="_self" href="frame.html?contents=hogehoge1.html">hogehoge1<a/><br>
<a target="_self" href="frame.html?contents=hogehoge2.html">hogehoge2<a/><br>
</body>
</html>
【フレームのページ】
<html>
<script langurage="javascript">
var frameSrc;
if (location.search.length > 1) {
//クエリ文字列を取得
var QS = location.search.substr(1).split("&");
for (idx in QS) {
//クエリ文字列のcontentsの値を変数にセット
if(QS[idx].split("=")[0] == "contents"){
var frameSrc = QS[idx].split("=")[1];
}
}
}
//画面出力内容(フレーム)を作成 contentsフレームには取得した変数をセット
var Html;
Html = "";
Html += "<frameset rows='100,*'>";
Html += " <frame src='top1.html' name='up'>";
Html += " <frameset cols='150,*'>";
Html += " <frame src='left2.html' name='menu'>";
Html += " <frame src='" + frameSrc + "' name='contents'>";
Html += " </frameset>";
Html += "</frameset>";
//フレームを出力
document.write(Html);
</script>
</html>
上記の内容でどうでしょうか?
説明が少なくて申し訳ないですが・・・
実験+検証+改変実装しました。何度か試してみて、bodyの中ではいけないとか、変数に入る色々なものは"ではなく'で囲まないといけないとか(frameborder='0')、/scriptの後にならbodyやnoframeが書けるなどはわかってきました(なぜ中じゃいけないのかわからないですがw)
あと、IEのセキュリティにひっかかってしまったので、その部分だけ取り扱いに注意が必要そうです。
ありがとうございました。