このデータ項目は, FOLIOLE の動作を見るための架空のものです。
 
【 フレーム対応に必要な3点 】
  1. 関連する HTML ファイルを作っておく。
  2. xxxxx.USE_FRAME を設定する ( 後述 ) 。
  3. FOLIOLE の第1層目および第2層目を表示するすべての HTML ファイルに同一の FOLIOLE 関連ファイルを読み込むまたは書き込む。
1 と 3 については,ご理解いただけると思います。
1で <frame> タグの name 属性は必ず指定し,かつ値に "top" など JavaScript で使う用語を使用するのは避けてください。ふた文字目以降にアンダーバー "_" を挿入すればまず大丈夫です。
3 については,FOLIOLE に関して同一の記述,同一の設定をおこなってください ( 直書きかファイルから読み込むかの違いはOK ) 。フレーム内にリンク先ページを取り込むときは忘れがちですのでご注意ください。新しく窓を開けば無関係です。
 
つぎに,2 についてご説明します。
設置方法のステップ 4 : メニューの形状を設定で設定する項目をひとつ追加することになります。
このサンプルでの設定ファイル menu_cfg_frame_top_bottom.js の中の最終行に
 
xxxxx.USE_FRAME = [0,1];  //( 実際には menu_cfg.USE_FRAME = [0,1]; )
 
というのがあります。この配列 [0,1] が,分割したフレームのどれに FOLIOLE のどの層を表示するのかを指示するものです。
  • この配列 [0,1] の第1要素は,フレームの配列 frames[] のうち,第1層目のメニューを表示する要素の添え字を表します。
  • この配列 [0,1] の第2要素は,フレームの配列 frames[] のうち,第2層目のメニューを表示する要素の添え字を表します。
  • 要素の数は必ず2個,かつ2個のみにしてください。それ以外の記述はフレーム不使用とみなされてしまいます。
すこし具体例をあげて説明します。
【 2分割 】
左図のように 2分割すると第1層目を表示するフレームは top.frames[0] で参照され,第2層目を表示するフレームは top.frames[1] で参照されるので,
 
xxxxx.USE_FRAME = [0,1];
 
と記述します。
【 3分割 】
左図の 3分割の例では,第1層目を表示するフレームは top.frames[1] で参照され,第2層目を表示するフレームは top.frames[2] で参照されるので,
 
xxxxx.USE_FRAME = [1,2];
 
と記述します。
【 ご注意 】
いっぱんに画面フレームで分割する場合,対等でない ( 階層関係にある ) フレーム定義をするには以下の方法があります。
  1. <frameset> タグを入れ子にする
  2. <frame> タグの src 属性の値として,新たなフレーム定義 HTML ファイルを呼び込む
上の3分割のケースでは,1番目の方法を前提にしていますが,対等な3分割でも問題ありません。
しかし,2番目の分割方法では,もと top.frames[1],top.frames[2] の位置にあるフレームオブジェクトへの参照は,それぞれ top.frames[1].frames[0],top.frames[1].frames[1] と読み替えなければなりません。
したがって,2番目の方法で分割したフレームに対応した xxxxx.USE_FRAME の設定はできませんのでご留意ください。
以上の記述を,メニューの形状を設定する配列の要素として,従来からある行に追加してください ( 添付の menu_cfg_frame_top_bottom.js の最下行参照 ) 。
 
【 フレーム使用時のお願い3点 】
  1. 第2層目を表示するフレームに置く HTML ファイルの <body>タグに,メニューがスクロールに追随するように設定してください。
    【 設定例 】 onscroll="fo_scroll_menu(mymenu);"
  2. マウスが第2層目以降のセルから離れたときに,第1層目のメニューの背景色の復帰指示を第2層目を表示するページに追加してください
    ( 反転のままの方がいいという場合も考えられますが )
    【 設定例 】 onmouseover="fo_hideMenu('mymenu');top.frames[0].fo_hideMenu('mymenu');"
  3. マウスが第1層目のセルから離れたときに,第2層目のコンテナを消す指示を第1層目を表示するページに追加してください
    【 設定例 】 onmouseover="fo_hideMenu('mymenu');if(top.frames[1])top.frames[1].fo_hideMenu('mymenu');"
 
【 フレーム使用時のご留意5点 】
  1. 上下分割の場合は,第2層目の位置は,自動的にフレーム上辺に密接します。
  2. 上下分割の場合は,第1層目の位置がフレーム下辺に密接するよう,フレームの幅か第1層目の位置またはセルの高さで調整してください。
    密着させずに隙間をとる場合は,マウスオーバーで fo_hideMenu() を起動する区域を,第1層目のセルの下端か幾分上に控えるように配置してください。隙間の分だけマージンを与える感じです。でないと,マウスが第2層目に移ろうとする瞬間に第2層目が消えてしまいます。
    【注】 FOLIOLE 4.1 からは、XXXXX.time_lag_out の値を 1000 などにすることでも対応できます。
  3. xxxxx.TARGET_WINDOW の指定がないときは,ジャンプ先 URL を読み込むフレームは,すべて 第2層目のあるフレームになります。
  4. 第2層目を表示するフレームのページに FOLIOLE の設定がない場合には,確実にエラーになります。その場合でも第1層目のマウスクリック動作には予定通りの反応をするようです。
  5. おそらく同一起源ポリシーに抵触する場合には動作しないでしょう。
    document.domain プロパティに共通の値を持てない別サーバーから来たページ同士や,http: と https: などスキームに違いのあるページ同士では,セキュリティ上の理由から,フレームをまたぐ操作が禁じられているようです。