フレームページの内容のみ表示されてしまいます



0   名前: まつ : 2006/07/16(日) 16:32  ID:H88Jh212
左側にメニュー、右側に内容のフレームページでホームページを作っています。
けれども、検索ページから来る人は皆、フレームページの右側の内容ページだけを表示して帰ってしまいます。
内容ページを表示した状態のフレームページへ転送したいのですが、方法が分かりません。
作ってあるフレームページには、最新の内容ページが表示されているので、検索した人が見たい内容ページを表示した状態でフレームページを表示させたいです。どうしたらできるのでしょうか。

1   名前: 匿名 : 2006/07/16(日) 16:32  ID:zqn32COP
全ページにトップページへのリンクを貼っとけば良いと思います。

> けれども、検索ページから来る人は皆、フレームページの右側の内容ページだけを表示して帰ってしまいます。
フレームはそういう事が起こるものです。嫌ならフレームを使わないのが一番です。(メニューの為にフレームを使ってるなら、全ページにメニューを書き込めば良いだけの話です)

2   名前: まつ : 2006/07/16(日) 16:32  ID:ofn2x9mt
匿名さん、ありがとうございます。
ホームページを全面的に書き換えたら対応できるとは思うのですが、フレームのままでフレームページの右側にそれをリクエストした内容ページを表示する方法があれば、教えてください。

3   名前: miz : 2006/07/16(日) 16:32  ID:hsztfoDY
JavaScriptを使って出来ないことはないですけど、どのみち全頁にJavaScriptを埋め込むための書き換えが必要ですし、
JavaScript offだと機能しないのと、また、フレーム非対応ブラウザへのアクセシビリティとしても、
サイトトップまたは、メニューページへのリンクは全頁に付けておくべきだと思います。

各頁に埋め込むJavaScript 外部ファイルにしておくのが便利
if( window.parent.frames.length < 2){
 location.href= "http://site/index.html?"+location.href;
//  site名適宜 frameset用ファイルのurlを絶対指定で入れる
//(ディレクトリー階層の差を吸収のため)
}


トップのframeset用ファイルに埋め込むJavaScript
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0  Frameset//EN">
<html lang="ja">
<head>
<script type="text/javascript">
window.onload = function(){
  xb = location.search.substring(1,999);
  if(xb ){
    if( xb.indexOf("http://site/") == 0){
    // 自サイト内への指定かチェック
    self.frames["H2"].location.href = xb;
    //  frame名は、目的ページを表示したい方のframe名を入れる
    }
  }
}
</script>
</head>
<frameset cols="40%,*" border="1" frameborder="1">
    <frame src="menu.html" name="H1"  scrolling="auto" noresize>
    <frame src="page.html" name="H2"  scrolling="auto" noresize>
    <noframe>
    <body><a href="menu.html">site menu</a>
    </body></noframe>
</frameset>
</html>

4   名前: Pid : 2006/07/16(日) 16:32  ID:wiQlMDpK
>>1 や >>3 の miz さんの繰り返しになりますが,

・どの道,全ページにスクリプトを埋め込むのであれば,メニューを生成してくれた方がよっぽどありがたいと思います(document.write の羅列でも何とかなるでしょう)。

・どの道,全ページを編集するのであれば,メニューへのナビゲーションを埋め込んだ方がよっぽど簡単だと思います。

フレームというのは,あくまで利用者に提供する「選択肢の一つ」に過ぎませんので,製作者が強制することはできませんし,強制すべきでもありません。

5   名前: Pid : 2006/07/16(日) 16:32  ID:wiQlMDpK
JavaScript を使わざるをえないなら,

・<link rel="contents" href="menu.html" title="メニュー" /> を埋め込んでおく。そうすれば,Mozilla,Opera,iCab などは,サイトナビゲーションバーに「メニュー」リンクが出現するので,(とりあえずは)何もする必要はない。

・その他の環境では,この link 要素から a 要素を生成して,本文の適当な位置に挿入する。

・余力があれば,menu.html を裏で読み込み,更新部分や重要メニュー項目をコピーして,本文に「お知らせ」のような形で挿入する(簡易 RSS モドキ (^^;))。

とかやれば良いかなあ。



>>0
> 作ってあるフレームページには、最新の内容ページが表示されている

仰る状況がイマイチ分かりませんが,もし内容に修正・変更があるなら,個々のページに修正記入ないし関連ページへのリンクを用意すべきでしょう。フレームを表示したところで,解決する問題とは思えませんが……。

6   名前: まつ : 2006/07/16(日) 16:32  ID:kpwx1ksb
mizさんの方法で、フレームページに転送することができました。
ありがとうございました。
ページ内にドロップダウンリストのような形でコンパクトにメニューを表示できるように、段階的に改良していきたいと思っています。
アドバイスをありがとうございました。

一覧へ戻る