フレームセット
フレーム付きのページで、フレーム内のコンテンツに直接リンクされたときに、 フレームを自動で付ける方法です。

ここで想定するフレーム付きのサイトは、
 <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>