• ベストアンサー

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

わかりにくいタイトルでごめんなさい。 http://www.~.jp/index.htm でアクセスできるトップページは左右の2つのフレームに別れていて、右側にコンテンツ、左側が各コンテンツへのリンク(画像)を表示しているとします。 そこでコンテンツAをクリックしたときには、右側にトップページと同じディレクトリにあるa.htmを表示します(状態A)。これは、targetでフレームを指定しています。 さて、index.htmのURLをご案内して見に来てもらう時は問題ないのですが、a.htmのURLをご案内して来てもらったときは、左側のリンクバーが表示されません。そのときでも、状態Aの様に表示するにはどうしたらいいでしょうか。 全てのページをフレームページにして、リンクバーをロードさせれば実現出来そうですが、あまりスマートには思えなくて...

  • shinw
  • お礼率83% (5/6)
  • HTML
  • 回答数4
  • ありがとう数6

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

  • ベストアンサー
  • kokucho81
  • ベストアンサー率61% (157/255)
回答No.3

非常に簡単でかつスマートにできる。 (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
質問者

お礼

詳細にご教示くださり、有難うございます。 正直言ってJavascriptはまだまだ勉強不足なのですが、引数を使えばうまくいくということがわかりました。 がんばってみます。

その他の回答 (3)

  • shigatsu
  • ベストアンサー率26% (511/1924)
回答No.4

私はこんな風にやってます。 まず、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
質問者

お礼

コードで例を示していただき、有難うございます。 Javascriptの知識が足りないので、大変勉強になりました。この方法と他の方が教えてくださった方法を組み合わせれば、何とかできそうな気がします。

  • kosa
  • ベストアンサー率25% (379/1464)
回答No.2

要するに、すべてのページを単ページで表示するのではなくフレームをつけるということでしょうか? Javaスクリプトを使用して「単ページ」のみでは表示できないようにすることは可能です! しかし、これは単ページのみでアクセスした場合は TOPページを表示することになります! 質問の趣旨とは少し違うのですがどーですか? スクリプト文 ---------------------------------------- <script language="javascript"> <!--// if (top == self) self.location.href="TOPページ"; //--> </script> ---------------------------------------- ※TOPページの所には例:index.htmlとかが入ります

shinw
質問者

お礼

有難うございました。 今回の目的とは微妙に違った方法だと思いますが、他のところで利用シーンがありそうです。大変参考になりました。

  • acky
  • ベストアンサー率31% (182/583)
回答No.1

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

shinw
質問者

お礼

皆様、お礼が遅れてすみません。 フレームをたくさん作るのは避けたかったので、今回はこの方法は取れませんでした。でも、大変参考になりました。有難うございます。

関連するQ&A

  • フレーム内のページ表示について

    メニューとメインでフレームのページを作っています。 メインページに直接訪れた人の為に、「メニューが表示されない場合はクリック」とフレームページのリンクを作ってあります。<A href="index.html" target="_top"> フレームページ(メニュー)は表示されるのですが、次にメニュー項目をクリックすると、全画面でメインページがでてしまい、またメニューが見えなくなってしまいます。 ふつうにフレームページ(index.html)を開いた場合は、ちゃんとメインフレーム内に各ページが表示されるので、なぜメインページのリンクからだとそれができないのかがわかりません。 フレーム名はメニュー=menu メイン=mainとして、メニュー各項目のリンクは<A href="001.htm" target="main">としてあります。 説明が下手でごめんなさい。よろしくお願いします。

    • ベストアンサー
    • HTML
  • ホームページビルダーのフレームのトップページの表示がおかしい。

    ホームページビルダー11で3分割のフレームページをつくりました。トップページの上や左側のフレームからのリンクをクリックすると、右側のフレームに表示されるのですが、トップページをクリックすると右側のフレームに3分割されたトップページが表示されてしまうのです。 どうしたらよいのかお分かりになる方教えていただけますようお願いいたします。

  • HTMLでフレームなしのページからフレームありのページへ

    過去の質問を探してみたのですが、なかなか私で理解できるような回答が見つからないのでお尋ねします。 現在ホームページを作成中で、フレームを使おうとしてますがトップページにはフレームを使わない仕様にしたいと考えてます。 トップページには、コンテンツが3つあり、フレームは1つでフレーム内の1カ所をそれぞれのコンテンツのページで表示させたいのです。 説明がわかりくくて申し訳ありません。 トップページ:index.html フレームページ:index2.html フレーム内:navi.htmlとmain.html このような構造でindex.htmlにA、B、Cそれぞれのコンテンツのリンクがあり、Aをクリックするとフレームページ(index2.html)のmain.htmlの部分のみがA用のページに入れ替わる。といった風にしたいのです。 A→mainA.html B→mainB.html C→mainC.html といった感じです。 それぞれのコンテンツ用にフレームページを増やす方法も考えて実行しましたが、できれば一つにしたいと思い、お尋ねします。 宜しくお願いいたします。

  • トップページへのリンクを押すと戻るボタンの履歴が消えます

    webページを作成しています.いま最後の仕上げの段階で,htmlをちょこちょこいじってます.(WinXP home SP2) フレームを使ってまして,左にメニューを右に内容を表示させるような構造になっています. index.htm にフレームpane1 とpane 2 を設け. pane1 に menu.htm を, pane2 にいろいろな htm ファイルを割り当てます. index.htm をクリックすると左フレームにmenuが,右フレームにTop.htmが最初に表示されます. 右側に来る内容の各ページに index.htm へのリンクを張りました.ところがブラウザでフレームが表示されている状態でこのリンクを押すと,戻るボタンの履歴が消えてしまうんです. 戻るボタンの履歴の最後は,フレームが表示される直前のページになり,それ以後トップページへのリンクが押されるまで,フレームが表示された状態で行き来した履歴が消失してしまいます. トップへのリンクを押すまでは戻るボタンはちゃんと使えるんですけど・・・ 別に新しいウィンドウで表示しているわけではありません.リンクのターゲットは_parent と_Topで試してみましたが両方とも同じ結果です. ブラウザはIE6とOPERA7を使いましたが,両方とも反応は同じでした.

  • トップページのカウンター設置場所

    ロリポップのサーバーのカウンターを使用しており、IP2重禁止チェックは入れています。 TOPページはタテ2分割フレームを使用し、 左側Aにメニュー・右側Bにメニューから選んだコンテンツが開くスタイルです。 メニュー内はTOP(最初の表示に戻る)/コンテンツa/コンテンツb/ コンテンツc(これのみフレーム内右側Bではなくウィンドウ全体に表示が変わります。その中にTOPへ戻るリンクがあります) 純粋に訪れた人数をカウントしたいのですが、 カウンターはメニューがある左側Aともう一方の右側Bのどちらに設置するのがベターでしょうか? それともどっちに設置しても変わりませんか?

  • フレーム内にあるメニューからトップページに戻る方法を教えてください。

    先ほど他の事でも質問したので恐縮ですが、どうしても分からないので教えてください。 現在、横3分割でフレームを切り、一番上にメニューを載せています。 同フレームのページ表示は問題ないのですが、トップページへ戻れません。 <a href="xxx.htm" target="_top"> だと、トップページは表示されますが別窓になってしまいますよね? 最初に開いた親ページに単純に戻りたいのですが、これは可能なんでしょうか? 度々ですみませんが、ご存知の方いらっしゃいましたらよろしくお願いします。

    • ベストアンサー
    • HTML
  • HP フレームページを開き、更にページを開きたい

    左右に分割されているフレームがあります。 indexページから <A href="illust.html" target="top">フレーム</a> とリンクさせており、フレームページに飛びます。 左フレームに「A」、「B」、「C」、「D」と…リンクが張ってあり、 「B」をクリックすると、右フレームに「B」ページが表示されます。 <A href="b.html" target="right" >B</a> indexページから、フレームにリンクさせたら、フレームページが開かれますが、 さらに「B」ページを開いた状態にすることは可能でしょうか? 今の状態だと、フレームページが開かれるだけで、手動で左フレームから「B」をクリックするのが手間なのですが…。 ビルダー等のソフトは使用しておらず、メモ帳でタグを書いています。

    • ベストアンサー
    • HTML
  • 2分割フレームの左側だけ表示できません!

    WIN98SE,IE6.0,フロントページエクスプレスでHP作成中ですが、左右2分割フレームの左側だけ、「ページを表示できません。」のメッセージが出ます。 表示したいファイル名はそれぞれ、 左:CONTENTS.HTM 右:TOP.HTM フレームセットファイルが、INDEX.HTM です。 その記述は下記の通りです。 <HTML> <HEAD> <TITLE>フレームセット</TITLE> </HEAD> <FRAMESET COLS="25%,*"FRAMEBORDER="no"> <FRAME SRC="contents.htm"NAME="left"> <FRAME SRC="top.htm"NAME="right"> </FRAMESET> </HTML> 本の内容を参考にしたのですが、非表示の原因が わかりません。ヒントでもかまいません、教えて下さい!

    • ベストアンサー
    • HTML
  • フレーム分割したページの表示について

    教えてください! 左右にフレーム分割したページで 左側にリストボックスを設置してコンテンツを作り、右側に選択したものを 表示させるようにしているのですが、 表示された時、右側のページで1度クリックしないと(アクティブにしないと?) その状態でホイールを回すとコンテンツが次々と変わってしまいます。 1度確定(クリック)しなくても、下にページをスクロールする方法はありますか? たとえば、リストボックスの隣によく”GO”ボタンを見ますが あれも一つの解決方法でしょうか? お願いします(_ _)

    • ベストアンサー
    • HTML
  • 上下に分けたフレームページ。アップすると下のページだけ表示される・・・

    仕事でホームページを作っています。 更新がメインですが、初心者で担当は一人なので、質問させてください。 トップページは左右に分かれたフレームページです。 右側のメインのページを、上下に分けたいページがあります。 フレームはindex.htmという名前で保存し、上のページをheaderという フレーム名をつけてheader.htmとし、下のページをfooterという名前にし、 footer.htmとして保存しました。 つまりページは3ページあります。 index.htmをダブルクリックしてInternet Explorerで開いた場合と、Dreamweaverなどで 開いた場合は、きちんと上下に分れたページになるのですが、 トップページ左フレームのメニューボタンにindex.htmのリンクを入れて サイトを開くと、右側のメインページにはフレームなしの上、footer.htmの ページだけしか開かないのです。 保存方法はDreamweaverでフレームを新規保存し、その後で「すべて保存」 にしています。 わかりづらい質問で申し訳ありません。思い当たることがありましたら アドバイスお願いいたします。