フレームセット
フレーム付きのページで、フレーム内のコンテンツに直接リンクされたときに、
フレームを自動で付ける方法です。
ここで想定するフレーム付きのサイトは、
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=Shift_JIS">
<TITLE>TOP PAGE !!</TITLE>
</HEAD>
<FRAMESET COLS ="220,*" BORDER="1" FRAMESPACING="0" FRAMEBORDER="no">
<FRAME SRC="menew.html" NAME="index">
<FRAME SRC="top.html" NAME="content">
</FRAMESET>
</HTML>
という感じのサイトで、
トップページという感じに
表示されます。この方法ではindex.htmlで表示できるページは限られてしまいます。
さらにコンテンツ3に直接リンクをされた場合には、
コンテンツ3となってメニュー画面が無くなって
しまいます。
そこで、
<HTML>
<script language="JavaScript">
<!--
urlstr = document.cookie;
if (urlstr==""){
document.location.replace("top.html");
}
else{
document.location.replace(urlstr);
}
document.cookie="";
//-->
</script>
</HTML>
とだけ書かれた、framechk.html(名前はなんでも良い)を用意して、index.htmlの
<FRAME SRC="top.html" NAME="content">
の部分を、
<FRAME SRC="framechk.html" NAME="content">
に変更します。更にコンテンツの方は、
<HTML>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=Shift_JIS">
<title>CONTETN 1</title>
<script language="JavaScript">
<!--
function framecheck(){
if (parent.frames.length==0){
urlstr = document.location.href;
document.cookie = urlstr;
document.location.replace("index.html");
}
}
//-->
</script>
</head>
<body text="#24aebe" bgcolor="#EFEFEF" onload="framecheck()">
<div style="font-size:30pt">ここはコンテンツ1</div>
</body>
</HTML>
こんな感じでスクリプトを書いておきます。
試しに
コンテンツ1や
コンテンツ2へ
リンクしてみると、ブラウザがcookieを受け取る設定になっていれば、コンテンツとメニューが表示されます。
簡単に動作説明をすると、content1.htmlが開かれたときに親フレームの枚数をカウント(parent.frames.length)
フレームが無かった場合に、cookieに自分のURLを設定してindex.htmlを開きます。
index.htmlが開かれると、framechk.htmlがcookieを受け取りそのページを表示します。
cookieが設定されていなければtop.htmlが表示されることになります。
どのページも同じファンクションを使ってますから、外部スクリプトで読み込むと良いかもしれません。
この方法では、リンク元がフレーム内部であった場合にはメニューが付きませんが一般の
検索サイトからのリンクには十分効果がありそうです。
<Back To Index>