【JavaScript/Frame/Html】

クリックした際に、_selfないし_top窓上で、<frameset>のページ”frame.html”を開き、かつ、フレームname=”up”、”menu”、”contents”のそれぞれに、top1.html(常に固定)、left2.html(常に固定)、hogehoge?.html(踏むリンクによって変化)を表示させたい場合。
hogehoge?をframe.htmlに渡すためのスクリプトをセットでお願いします。

回答の条件
  • 1人2回まで
  • 登録:2006/11/07 01:38:41
  • 終了:2006/11/08 01:50:47

ベストアンサー

id:bankband No.1

bankband回答回数23ベストアンサー獲得回数42006/11/07 10:08:52

ポイント100pt

【フレームを開くページ】

<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>

上記の内容でどうでしょうか?

説明が少なくて申し訳ないですが・・・

id:naleringar

実験+検証+改変実装しました。何度か試してみて、bodyの中ではいけないとか、変数に入る色々なものは"ではなく'で囲まないといけないとか(frameborder='0')、/scriptの後にならbodyやnoframeが書けるなどはわかってきました(なぜ中じゃいけないのかわからないですがw)

あと、IEのセキュリティにひっかかってしまったので、その部分だけ取り扱いに注意が必要そうです。

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

2006/11/08 01:49:55
  • id:naleringar
    追伸:スクリプトなしで、hogehoge?の数だけ<frameset>のページ”frame?.html”を作るということも一応考えたのですが、メンテする人が枚数分更新しなければいけないと思われたので、極力、更新枚数が少なくできる方向でお願いします。SEO対策については別途考慮済です。
  • id:naleringar
    私のIEは色々な都合上、セキュリティレベルが相当低く設定してあるのですが、「普通の」IEだとひっかかる気がします。その場合、どの操作で回避できるんでしょう……。
  • id:bankband
    私のIEはセキュリティ関係は何もいじってない(IE6:SP2)ですが、
    問題なかったので,回答させていただきました。
    でもクライアントスクリプトだといろいろ制限ができてしまいますので,
    サーバーサイドのプログラム(PHPやASP等)の利用をお勧めします。
    (利用できない等の理由はあると思うのですが・・・)
    ポイントありがとうございました。
  • id:naleringar
    メンテ担当が、phpまでは難しいかと思われるんですね。今回書いていただいたこれも、もし難しいようなら、また別の方法を考えるしかないようです。ただ、フレーム化は先方の希望なので、なるべく更新枚数は少なく、メンテの手間も少なく、かつ、要望を満たす…という形のひとつだと思っています。
    別の手段を考える際はまた質問を立ち上げますので、ぜひよろしくお願いいたします。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません