-PR-
解決済み

部分ページURLへのアクセスでトップフレームを表示

  • 暇なときにでも
  • 質問No.22884
  • 閲覧数89
  • ありがとう数6
  • 気になる数0
  • 回答数4
  • コメント数0

お礼率 83% (5/6)

わかりにくいタイトルでごめんなさい。

http://www.~.jp/index.htm

でアクセスできるトップページは左右の2つのフレームに別れていて、右側にコンテンツ、左側が各コンテンツへのリンク(画像)を表示しているとします。

そこでコンテンツAをクリックしたときには、右側にトップページと同じディレクトリにあるa.htmを表示します(状態A)。これは、targetでフレームを指定しています。

さて、index.htmのURLをご案内して見に来てもらう時は問題ないのですが、a.htmのURLをご案内して来てもらったときは、左側のリンクバーが表示されません。そのときでも、状態Aの様に表示するにはどうしたらいいでしょうか。

全てのページをフレームページにして、リンクバーをロードさせれば実現出来そうですが、あまりスマートには思えなくて...
通報する
  • 回答数4
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.3
レベル11

ベストアンサー率 61% (157/255)

非常に簡単でかつスマートにできる。

(1)それぞれの単体のページのジャバスクリプトとして以下の趣旨の記述を書く。(それぞれのページに具体的に記述するのではなく、共通の読み込みJavaScriptにすれば良い)
(論理だけ述べる。
 ジャバスクリプトは書かない。自分で調べること)

(1).まず、親フレームが存在し、それが本当に自分のHPの親フレームかとうかの一致確認処理。
(レフトフレームの「フレーム名」から判定するのが良い)

(2).一致していれば、何もしない(それは左のリンクバーから来たとほぼ間違いなく推察される)

(3).一致していなければ、「そのファイルの名前を引数として」トップページを呼び出す。
location.search.substring()などで引数を受け取れる。
ヒントはhttp://oshiete1.goo.ne.jp/kotaeru.php3?q=18407 書籍などにものっている機能。

(4).トップページのジャバスクリプトは、
2つに分ける。
JavaScriptでフレーム分けを吐き出す。
JavaScript内で、引数があるばあいと、ない場合とで、document.writeの内容を変えれば良い。
※javaScriptを切っていた場合のデフォルト(今のフレーム分けと同じもの)は用意しておくことをお薦めする。
お礼コメント
shinw

お礼率 83% (5/6)

詳細にご教示くださり、有難うございます。

正直言ってJavascriptはまだまだ勉強不足なのですが、引数を使えばうまくいくということがわかりました。
がんばってみます。
投稿日時 - 2001-01-02 00:38:01
-PR-
-PR-

その他の回答 (全3件)

  • 回答No.1
レベル12

ベストアンサー率 31% (182/583)

直リンクでフレーム対応させたいということですよね?自分はプログラムの知識はないので、何かのプログラムを組み込めば出来るのかも知れませんが、それは分かりません。以下にはひとつの案として回答いたします。
これを実行するにはそれなりのディスクスペースが必要ですので、あらかじめご了承下さい。
まず、すでにあるデータとは別に、直リンクしたいページも、新たにフレーム構造にします。もちろん名前も違うものを使ってください。a.htmlだったらaa.htmlというカンジです。メニューページもすでにあるものとは別の名前で新規に作成して下さい。とは言ってもデータはすでにあるもののコピーでOKです。そして直リンクページ以外のものは、すべてターゲットで指定します。本来トップページとなるはずのtop.htmlもターゲットにします。こうすると、あたかもフレーム構造で動くように見えます。ただし見かけのURL欄はa.htmlのままですが。。。
これで分かりますか?つまり直リンクしたいページの分だけ余計にフレームページとしてのデータが必要になるわけです。その他のページは共有できますが、もともとのページの戻りターゲットも_selfにしておく必要があります。
お礼コメント
shinw

お礼率 83% (5/6)

皆様、お礼が遅れてすみません。

フレームをたくさん作るのは避けたかったので、今回はこの方法は取れませんでした。でも、大変参考になりました。有難うございます。
投稿日時 - 2001-01-02 00:33:49


  • 回答No.2
レベル13

ベストアンサー率 25% (379/1464)

要するに、すべてのページを単ページで表示するのではなくフレームをつけるということでしょうか?

Javaスクリプトを使用して「単ページ」のみでは表示できないようにすることは可能です!

しかし、これは単ページのみでアクセスした場合は
TOPページを表示することになります!
質問の趣旨とは少し違うのですがどーですか?


スクリプト文

----------------------------------------
<script language="javascript">
<!--//
if (top == self) self.location.href="TOPページ";
//-->
</script>
----------------------------------------

※TOPページの所には例:index.htmlとかが入ります
お礼コメント
shinw

お礼率 83% (5/6)

有難うございました。

今回の目的とは微妙に違った方法だと思いますが、他のところで利用シーンがありそうです。大変参考になりました。
投稿日時 - 2001-01-02 00:35:55
  • 回答No.4
レベル13

ベストアンサー率 26% (511/1924)

私はこんな風にやってます。

まず、JavaScriptでこんなのを書きます。
---
if (window.name != "framename" ) {
document.location.href = "frameset.html";
}
---
各ページに
<script>
</script>
で囲んで書いても良いですし、別ファイル(check.jsとしてファイル保存)にして
<script src="check.js"></script>
なんてこともできます。私は後者のをつかってます。

で、framename には、本来このコンテンツを表示すべきフレームの名前を入れます。targetで指定する名前です。
frameset.htmlはフレームセットを定義しているソースに置き換えます。

動きとしては、自分の表示されているウィンドウ名がframenameでは無い場合frameset.htmlを表示する。という感じです。
お礼コメント
shinw

お礼率 83% (5/6)

コードで例を示していただき、有難うございます。

Javascriptの知識が足りないので、大変勉強になりました。この方法と他の方が教えてくださった方法を組み合わせれば、何とかできそうな気がします。
投稿日時 - 2001-01-02 00:40:33
このQ&Aで解決しましたか?
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


専門家があなたの悩みに回答!

-PR-

ピックアップ

-PR-
ページ先頭へ