「覚え間違い」を教えてください!

フレームを使用して、左側:メニュー、右側:コンテンツという構成をとっているページで、右側のコンテンツに任意のコンテンツを表示させた状態でのリンクを張りたいと思っています。具体的にどのようにすればよいのでしょうか?

A 回答 (2件)

通常のHTMLで実現するには無理ですが、CGIやJavaScriptを使えば可能でしょう。


勉強ついでにJavaScriptでのサンプルを作ってみました。

--index.html---
<frameset cols="10%,*">
<frame name="menu" src="menu.html">
<frame name="content" src="top.html">
</frameset>

--top.html-----
<html>
<head>
<script type="text/javascript">
<!--
var selfPath = new Array("top.html", "/test/top.html");

function isSelfPath(path){
for(var i = 0; i < selfPath.length; i++){
if(path == selfPath[i]){
return true;
}
}
return false;
}

function loadContent(){
if(parent == null){
return null;
}

if(parent.location.search == ""){
return;
}

var query = unescape(parent.location.search.substring(1));
var params = query.split("&");
for(var i = 0; i < params.length; i++){
var key = params[i].split("=")[0];
var val = params[i].split("=")[1];
if(key == "page"){
if(!isSelfPath(val)){
window.open(val, "_self");
}
return;
}
}
}
// -->
</script>
</head>

<body onLoad="loadContent();" >
</body>
</html>

こうするとhttp://hogehoge.com/test/?page=xxx.htmlなどのようにアクセスすると右側にxxx.htmlが読み込まれます。

環境に合わせていろいろ変えてください。
selfPathと言うのはtop.html自身を表すURIです(絶対パスと相対パスを指定してください)。これに入れておかないと自分自身を指定したときには何回もリロードされちゃいます(笑
ちなみにIEでの動作しか確認してません。
    • good
    • 0

フレームのTOPページがあると思います。


つまり親フレーム。
このTOPが下のような感じになっていたら
------------------------------------------------
<html>
<head>
<title>フレームTOP</title>
</head>
<frameset cols="150,*">
<frame name="hidari" target="main" src="○○.html">
<frame name="migi" src="△△.html">
</frameset>
</html>
-----------------------------------------------
フレームの左には「○○.html」,右には「△△.html」が表示されていると思います。

左ページから右ページを替えたいときは,
<p><a href="http://www.goo.ne.jp/" target="migi">リンク</a></p>
みたいに書けばいいわけです。

普通 リンクのtargetは "_self" や,"_blank" をよく使いますが,
ターゲットをTOPページで決めた frame name にすれば良いわけです。

そうだと思いますよ。日頃あまり意識しませんが。
    • good
    • 0
この回答へのお礼

ありがとうございます!
早速使わせていただきます。

お礼日時:2005/07/03 10:56

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報