このデータ項目は, FOLIOLE の動作を見るための架空のものです。
【 フレーム対応に必要な3点 】
- 関連する HTML ファイルを作っておく。
- xxxxx.USE_FRAME を設定する ( 後述 ) 。
- 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];
と記述します。
【 ご注意 】
いっぱんに画面フレームで分割する場合,対等でない ( 階層関係にある ) フレーム定義をするには以下の方法があります。
- <frameset> タグを入れ子にする
- <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点 】
-
第2層目を表示するフレームに置く HTML ファイルの <body>タグに,メニューがスクロールに追随するように設定してください。
【 設定例 】 onscroll="fo_scroll_menu(mymenu);"
-
マウスが第2層目以降のセルから離れたときに,第1層目のメニューの背景色の復帰指示を第2層目を表示するページに追加してください。
( 反転のままの方がいいという場合も考えられますが )
【 設定例 】 onmouseover="fo_hideMenu('mymenu');top.frames[0].fo_hideMenu('mymenu');"
-
マウスが第1層目のセルから離れたときに,第2層目のコンテナを消す指示を第1層目を表示するページに追加してください。
【 設定例 】 onmouseover="fo_hideMenu('mymenu');if(top.frames[1])top.frames[1].fo_hideMenu('mymenu');"
【 フレーム使用時のご留意5点 】
-
上下分割の場合は,第2層目の位置は,自動的にフレーム上辺に密接します。
-
上下分割の場合は,第1層目の位置がフレーム下辺に密接するよう,フレームの幅か第1層目の位置またはセルの高さで調整してください。
密着させずに隙間をとる場合は,マウスオーバーで fo_hideMenu() を起動する区域を,第1層目のセルの下端か幾分上に控えるように配置してください。隙間の分だけマージンを与える感じです。でないと,マウスが第2層目に移ろうとする瞬間に第2層目が消えてしまいます。
【注】 FOLIOLE 4.1 からは、XXXXX.time_lag_out の値を 1000 などにすることでも対応できます。
-
xxxxx.TARGET_WINDOW の指定がないときは,ジャンプ先 URL を読み込むフレームは,すべて 第2層目のあるフレームになります。
-
第2層目を表示するフレームのページに FOLIOLE の設定がない場合には,確実にエラーになります。その場合でも第1層目のマウスクリック動作には予定通りの反応をするようです。
-
おそらく同一起源ポリシーに抵触する場合には動作しないでしょう。
document.domain プロパティに共通の値を持てない別サーバーから来たページ同士や,http: と https: などスキームに違いのあるページ同士では,セキュリティ上の理由から,フレームをまたぐ操作が禁じられているようです。