Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
  • ベストアンサー

フレームで

いくつか聞きたいことがあります。 まず、現在左と右にページをフレームでわけ、左がメニュー、右がメインページとなっています。 (1)それで、フレームページにしたときのデメリットっ て何なのでしょうか。 (2)タグでもJavaScriptでもDHTMLでもいいので、それを 使ってフレームなしのページから、フレームありの ページにいき、なおかつ、その左と右の内容を指定  する方法ってあるでしょうか。あったら教えてくだ さい。 (3)インラインフレームとして、ひとつひとつ一回一回 左のメニューを読み込むことも考えていますが、そ の時にはやはりページを開くときに重いと感じるよ うになるでしょうか。また、インラインフレームに したら記述が面倒くさくなったりしますか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

(1) フレームページにしたときのデメリット A. 閲覧者側のデメリット a1. アドレスバーに表示される値やタイトルがフレームの内容であり、フレーム内のメインページの内容ではない。 a2. フレーム内のメインページを見たい時に、メニューページが場所をとり邪魔。 a3. 開発者の配慮不足などでメニューページが適切に表示できなかった為に、他のページへ行きにくくなる。 a4. フレーム内のページを直接ブラウザで表示してしまった場合に、他のページへ行きにくくなる。 B. 開発者側のデメリット b1. 管理対象となるファイルが増える。 b2. フレームが無効なブラウザなど、配慮項目が多くなる。 b3. フレーム内用のファイルが直接閲覧された場合なども配慮が必要となる。 (2) フレームなしのページから、 フレームありのページにいき、 なおかつ、その左と右の内容を指定する方法。 素直に表示したい左と右の内容を指定しているフレームのページを用意する事をお勧めします。 呼び出す側としては、何かしら左と右をどれと伝える情報は送り出さなければなりませんし 呼ばれる側も左と右は何と判断しなければなりません。 そうすると、いろいろな処理を考えてそれぞれにいろいろな配慮をする事を考えれば その都度、フレームのファイルを用意した方が結局簡単で管理,処理も楽です。 発想というか感覚としてはインラインフレームと同じ様なものです。 ただ、メインとメニューのページの関係が兄弟の様な横なのか親子の様な縦なのかが違う程度です。 尚、どうしても動的に行いたい場合は、呼び出しの URL にパラメータを添付すれば良いかと。 ただ、アドレスとしてそれが表示されますが。 あとは CGI なり JavaScript なりでそのパラメータを判断してフレームの左のメニューや右のメインのアドレスを書き換えれば・・・。 (3)インラインフレームとして フレームのファイルがない分、インラインフレームの方が初回は軽いと思います。 ページ遷移では、既読のページはキャッシュが使われたりしますのでどれほどの差になるか・・・。 まぁ気になる程に重くはならないと思います。 JavaScriptがあるとその都度動きますから、JavaScriptが重いと気になるかも・・・。 それよりもインラインフレームの場合はサイズの事が問題になりそうかと。 閲覧者の環境への配慮が面倒そうかと・・・。 (4) 補足 Opera では容易に設定でフレームやインラインフレームを無効に出来ます。 また、検索サイトなどを意識すればメインページなどフレーム内のページをそのままフレームなしで見れる様に配慮も必要です。 そして閲覧者のセキュリティーの意識から JavaScript を無効にしている可能性もありますし、 またフレーム内のページ自体の URL が不明な事を不安に思う場合もありフレームを嫌う事もあるので、 フレームなしを選択できる様に配慮する必要もあるかも・・・。

matio009
質問者

お礼

とても詳しく回答してくださり ありがとうございます! 検索エンジンも意識して、トップページや、その他まとめてあるページは全てフレームなしで、 細かい一番手先の部分だけフレームにしました。 これならフレームのいいトコと非フレームのいいトコだけとれましたので。 というわけで、インラインフレームはやめました。 ありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

(1)フレームのデメリット ページが指定できないこと。 わたしはこの理由でフレームはほとんどつかいません。 (2)ありますがお勧めしませんよ。 framesetは強制力がつよく、frameset移行の javascriptを無効にしてしまうようです。 なので、制御のためにはframesetをjavascriptから 書き出す必要があります。おかげですごくきたないです。 以下ソース //a.htm <form action="b.htm" method="get"> 左側: <input type="radio" name="left_page" value="l1.htm" checked>l1.htm <input type="radio" name="left_page" value="l2.htm">l2.htm<br> 右側: <input type="radio" name="right_page" value="r1.htm" checked>r1.htm <input type="radio" name="right_page" value="r2.htm">r2.htm<br> <input type="submit" value="送る"> </form> //b.htm <script language=javascript> var a=document.location.toString().split("?") if (a.length==2){ var b=a[1].split("&") var d=new Array(b.length); for (var i=0;i<b.length;i++){ var c=b[i].split("="); d[c[0]]=c[1]; } }else{ var d=new Array(2); } if(d["left_page"]==null){d["left_page"]="l1.htm";} if(d["right_page"]==null){d["right_page"]="r1.htm";} document.write("<frameset cols=\"50%,*\">"); document.write("<frame src=\""+d["left_page"]+"\" name=\"left_page\">"); document.write("<frame src=\""+d["right_page"]+"\" name=\"right_page\">"); document.write("</frameset>"); </script> //l1.htm 左1 //l2.htm 左2 //r1.htm 右1 //r2.htm 右2 (3)インラインフレーム よくわかりませんのでパス

matio009
質問者

お礼

回答ありがとうございました!

すると、全ての回答が全文表示されます。
回答No.1

フレームのページを指定するには HTMLの[frame src=]のところにURLを指定すれば良いのではないでしょうか? http://www.fureai.or.jp/~irie/html-tag/frame.html こちらのframeタグの内容をご覧下さい。 フレームページのメニューをクリックして 左と右のページを一度に変えるには、 Javaスクリプトを利用すると出来ます。 http://www14.plala.or.jp/sugachuu/JavaScript/index3.html こちらの「フレーム技・7」です。

matio009
質問者

補足

早速の返答ありがとうございます。 少し説明不足だったのか、ちょっと聞いているのと違う気がします。あまり詳しくみていないので、あっていたら失礼します。 フレームなしのページから、一気にフレームありのページに進み、さらに右と左の表示内容も変えるのです。 現在のフレームなしページが1.htmlで フレームがあるページが2.htmlで  2.htmlの初期設定が右がa.html左がi.htmlだとして 表示させたいページが右がu.html左がe.htmlだとします。 1.htmlから2.htmlに普通にいくとa.htmlとi.htmlが表示されますが、何とかしてそのa,iを表示させずu,eを表示されたいのです。 わかりますか?説明下手でごめんなさい。

すると、全ての回答が全文表示されます。

関連するQ&A