インフレーム内ページを記憶する方法

このQ&Aのポイント
  • 訪問者が選んだインフレーム内のページを記憶する方法を教えてください。
  • インフレーム内のページを切り替えた後も、選んだページを記憶する方法を知りたいです。
  • フレーム内のページをレイヤーや他の方法で表示させることも考えられます。
回答を見る
  • ベストアンサー

インフレーム内ページを記憶したい

いつもお世話になっています。 よくある事のような気がするのですが 私の探し方が悪いのか発見できませんでしたので、質問させてください。 ■状況 ・index.htmlにframeという名前のインフレームを作りました。 ・index.html以外に「A.html(Aが好きな人用)」「B.html(Bが好きな人用)」「C.html(Cが好きな人用)」を作りました。 ・インフレームに元々表示されるページを「A.html」に設定しました。 ・index.htmlのインフレームを「「A.html」「B.html」「C.html」にそれぞれ切り替えるメニューを普通のリンク(JavascriptではなくAタグ)でインフレームの下に作りました。 ■したい事 訪問者さんが選んだインフレーム内のページを記憶しておきたい。 ----------------------- 例えば、イラスト&素材のページがあったとして、 イラストを見に来てくださった方と素材を探しに来て下さった方とでは目的が違うので、 一回インフレームを切り替えたら2回目以降も最後に選んだページのままにしておきたいのですがやり方がわかりません。 フレーム内のページ(A.html,B.html,C.html)はそれぞれのメニューを表示させたいだけですので もしフレームが無理でしたらレイヤーでもいけそうですので どなたか方法をご存知でしたら教えてやってください。 どうぞ、よろしくお願いします!(つω-`。)

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

  • ベストアンサー
  • gaku1
  • ベストアンサー率71% (10/14)
回答No.3

No.1です。 お気づきのように,インラインフレームがまだ定義されていない時点で,それへアクセスしようとしています。解決法はいろいろあると思いますが,たとえば, window.onload=function(){ window.fframe.location.href=frameurl; } のようにしてはいかがでしょうか。

monica_panda
質問者

お礼

お返事ありがとうございます!! 教えて頂いたタグを入れたら出来ました。ずっと悩んでいたので、凄く嬉しいです。何度も教えて頂いて、どうもありがとうございます!!

monica_panda
質問者

補足

ありがとうございます!!おかげで表示できました!! 私と同じような事を探していらっしゃる方が居るかも・・・という事で、作成できたソースを置いていかせてください。 (クッキーの中身別に表示URLを分岐は、どちらか一方のみ。 私の場合、他のクッキーが邪魔して現れちゃったので下の方を使いました。) ■---<head></head>の間--- <script language="JavaScript"><!-- //クッキー呼び出し alldate = document.cookie + ";"; //クッキー情報をalldateに取得 pref1 = alldate.indexOf("PREF",0); //PREFという文字のある場所を取得 pref2 = alldate.substring(pref1,alldate.length);//PREF以降を抜き出す start = pref2.indexOf("=",0)+1; //サイトURLの初めの位置を取得 end = pref2.indexOf(";",0); //サイトURLの最後の位置を取得 url1 = pref2.substring(start,end);  //決定された範囲を使って文字列を取得 //クッキーの中身別に表示URLを分岐(基本) //-----この方法で出来ない場合、ここから------ if(url1 == "") { //クッキーの中身が無い時 frameurl = 'A.html'; } else { //クッキーの中身が入っていたら frameurl = 'url1'; } //-----ここまで一気に削除------ //クッキーの中身別に表示URLを分岐(上の方法で出来なかった場合) //-----上記でいい場合ここから------ if(url1 == "B.html") { //クッキーの中身がB.htmlの時 frameurl = 'B.html'; } else if (url1 == "C.html") { //クッキーの中身がC.htmlの時 frameurl = 'C.html'; } else { //クッキーの中身がB.htmlでもC.htmlでもない時(初期含む) frameurl = 'A.html'; } //-----ここまで一気に削除------ //[fframe]という名のフレームにページを表示させる window.onload=function(){ window.fframe.location.href=frameurl; } // --></script> ■---<Body></body>の間--- <a href="A.html" target="fframe" onclick='document.cookie="PREF=A.html;expires=Fri, 31-Dec-2030 23:59:59;"'>A</a> <a href="B.html" target="fframe" onclick='document.cookie="PREF=B.html;expires=Fri, 31-Dec-2030 23:59:59;"'>B</a> <a href="C.html" target="fframe" onclick='document.cookie="PREF=C.html;expires=Fri, 31-Dec-2030 23:59:59;"'>C</a> <br> <a href="A.html" target="fframe" onclick='document.cookie="PREF=;expires=Fri, 31-Dec-2000 23:59:59;"'>消す</a> <br> <IFRAME name="fframe" WIDTH=200 HEIGHT=200></IFRAME>

その他の回答 (3)

  • gaku1
  • ベストアンサー率71% (10/14)
回答No.4

すみません。No.3の発言で,「No.2です」とすべきところを,「No.1です」と間違って名乗ってしまいました。No.1のSAYKAさん,失礼しました。

  • gaku1
  • ベストアンサー率71% (10/14)
回答No.2

クッキーを使えばよいと思います(適当な期限を設定すれば,ブラウザを終了しても消えません)。(本論と無関係ですが"frame"は予約語のような気がするので,使わない方が良いかもしれません。以下では"fframe"と書くことにします。) <a href="B.html" target="fframe" onclick='document.cookie="PREF=B.html;expires=Fri, 31-Dec-2030 23:59:59;"'>B</a> のようにします。 index.htmlの<iframe>にはsrcを書かないでおき,PREFというクッキーがセットされていればその値を,セットされていなければA.htmlをインラインフレーム内に表示します。 window.fframe.location.href=表示するファイル; ちなみにローカルにあるhtmlファイル(urlが,http://.....ではなくfile://.....)では,クッキーがセットされないので,ファイルをサーバに置いてデバッグしてください。 セットされているクッキー(の値)の読み出し方は分かりますか?

monica_panda
質問者

補足

お返事ありがとうございます!!Javascriptで出来るんですね。良かったv 教えて頂いた方法で頑張ってみたのですが、素人だからか頭が良く無いからか、上手く表示されませんでした。 もし良ければ、もう少しお付き合いして頂けませんでしょうか。 ---header部分--- <script language="JavaScript"><!-- alldate = document.cookie + ";"; //クッキー情報をalldateに取得 pref1 = alldate.indexOf("PREF",0); //PREFという文字のある場所を取得 pref2 = alldate.substring(pref1,alldate.length); //PREF以降を抜き出す start = pref2.indexOf("=",0)+1; //サイトURLの初めの位置を取得 end = pref2.indexOf(";",0); //サイトURLの最後の位置を取得 url1 = pref2.substring(start,end);  //決定された範囲を使って文字列を取得 if(url1 == ""){ frameurl = 'A.html'; } else{ frameurl = url1; } //document.write(frameurl); window.fframe.location.href=frameurl; // --></script> ---BODY部分--- <a href="A.html" target="fframe" onclick='document.cookie="PREF=A.html;expires=Fri, 31-Dec-2030 23:59:59;"'>A</a> <a href="B.html" target="fframe" onclick='document.cookie="PREF=B.html;expires=Fri, 31-Dec-2030 23:59:59;"'>B</a> <a href="C.html" target="fframe" onclick='document.cookie="PREF=C.html;expires=Fri, 31-Dec-2030 23:59:59;"'>C</a> <br> <a href="A.html" target="fframe" onclick='document.cookie="PREF=;expires=Fri, 31-Dec-2000 23:59:59;"'>消す</a> <br> <IFRAME name="fframe" WIDTH=200 HEIGHT=200></IFRAME> 文字で表示は出来るのでクッキーにはちゃんと入ってくれてると思うのですが、最初にページを開いた時点で、クッキー内のフレームに表示することが出来ないでいます。window.fframe.location.href=frameurl;の入れる場所かなんかがおかしいのかな?と思うのですが・・・。

noname#39970
noname#39970
回答No.1

そこはもうCGIの仕事だと思う・・・ javascriptでcookieを扱えるけどブラウザが終了すると消えちゃうから使い物にならないし。

monica_panda
質問者

補足

お返事ありがとうございます。 確かJavascriptでも、訪問者さんの名前を聞いて訪問回数を表示するところがありますのでブラウザを閉じても保存出来ていたと思いますが、CGIの方が自分のPCに保存しなくて済むので軽いのかも・・・?? でもCGIを書くだけの力が無いので、ご意見活かしきれずにごめんなさいです・・・。

関連するQ&A

  • インフレームの同時読込みについて

    宜しく、お願いします。 HP作成で、フレームにて、右ページと左ページを作成し、右ページ内にリンクボタンと下部にインフレームBとインフレームCを設置した状態で、リンクボタンで、インフレームBとインフレームCに同時に別ページを読込みたいのですが、方法が有りましたら、教えて下さい。 参考 左右のフレームがない状態で、右ページだけの場合は、『function funcb()』   で問題なく読込み可能なのですが、フレームを設けて、インフレームBとインフレームCに同時に読込もうとすると、 エラーで上手くいきません。(設定ミスでしょうか。)

    • ベストアンサー
    • HTML
  • インフレームの指定方法

    他のページからのリンクの貼り方なのですが・・・ なんて言って説明したら良いか分からないのですが、 TOPのURL(http://●●.jp/)にリンクすると、 通常はA.htmlを表示しているTOPページ(index.html)なのですが、 別のページB.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
  • 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 といった感じです。 それぞれのコンテンツ用にフレームページを増やす方法も考えて実行しましたが、できれば一つにしたいと思い、お尋ねします。 宜しくお願いいたします。

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

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

    • ベストアンサー
    • HTML
  • 私のHPのgoogleの検索結果

    やっと登録されたようなのですが、 うまく登録になっていない?不安定な状況?なんか変なんです。 フレームページ、なし、ともにindex フレーム1はtitle、フレーム2はmenu、フレーム3はtop で作って、その中のページを例えば/a/、/b/、/c/、/d/とします。以下は検索上位順(1つ目がメインに表示)。 昨日、フレームなしindex、top、/a/の3件がヒットしたのですが、 その後、top、menu、title、/a/、/b/、/c/、/d/、フレームなしindexと8件ヒットしたのですが、 昨晩、top、/a/、/b/、フレームなしindexの4件に減り、 深夜に、top、/a/、/b/の3件になり、 今朝みたら、top、menu、title、/a/、/c/、フレームなしindexの6件まで戻り、 さっき見たら、top、menu、/a/の3件にまたなってしまいました。 今、見たら、top、menu、title、/a/、/b/の5件です。 こんなにコロコロ変わるものなのでしょうか? しかもメインのページがフレーム3のtopで表示されます(最上位)。 本当のメインがフレームなしindexなのに下位で表示されたり、なくなったりします。(現在はindexがヒットしません) どうしたらindexが再ヒットするようになり、最上位に表示されるようになりますか? ただ単に検索結果が不安定なだけなのでしょうか? でも、なんでindexが消えてしまったのでしょう? 他のホームページはindexがフレームでも、ちゃんとヒットし、最上位に表示されますよね?

  • インラインフレーム内ページの切替

    インラインフレームに関して教えてください。 以下の構成になっています。 index.html・・・メニューページ  リンクA  リンクB  リンクC hyouji.html・・・インラインフレーム枠ページ  a.html・・インラインフレーム内に表示するページ1  b.html・・インラインフレーム内に表示するページ2  c.html・・インラインフレーム内に表示するページ3 実施したい事は、 index.htmlの リンクAをクリックすると、 houji.html内のインラインフレームには、a.htmlを表示。 リンクBをクリックすると、 houji.html内のインラインフレームには、b.htmlを表示。 リンクCをクリックすると、 houji.html内のインラインフレームには、c.htmlを表示。 一つは、 それぞれhyouji_a.html hyouji_b.html hyouji_c.htmlを用意する事だと思うのですが、ファイルが増えていくので出来れば、枠はhyouji.htmlだけにしたいと思っています。可能でしょうか?

    • ベストアンサー
    • HTML
  • フレーム内のページを表示した時、自動的にフレーム表示にする方法

    フレームの元となるページ「A」、 そのフレーム内に表示するページ「B(メニュー)」、「C(コンテンツ)」があったとします。 例えばGoogleからの検索で「C」に訪問があった場合などに、ページ「A」に自動的に転送したいです。 「C」だけだと、「B」に表示してあるメニューが見れない為です。 もし上記のような「転送」など、または他の解決方法がありましたら、教えていただきたいです。 よろしくお願いいたします。

    • ベストアンサー
    • HTML
  • 時間ごとに表示するページを変えたい

    indexをフレームでいくつかにわけているのですが、 (メニューとメインみたいな感じで) そのひとつを時間ごとに表示するhtmlを 変える事はできるのでしょうか? 7:00~21:00まではそこにA.htmlを表示していて、 それ以外はB.htmlを表示しているというふうにしたいのです。 宜しくお願い致します^^

  • submitして表示されるページをフレーム分割

    perl-CGIを使ったシステムです。 フレーム上下分割したページで、上のフレームにリストボックスにカテゴリがA・B・Cがあり、どれかを選択して実行ボタン(SUBMIT)をクリックすると、下のフレームに選択カテゴリのデータを抽出し一覧表が表示されるようにしています。ここまでは出来ているのですが、 これと全く別のページ、例えばindexページに、「カテゴリを選択して下さい。A、B、C」みたいなリンクがあって、Aをクリックすると、先に書いた、上下分割のページが表示され、下のフレームにはAの抽出一覧が表示される・・・という様にするにはどうしたらよいのでしょうか? indexでAを選択すると、Aの抽出一覧、つまり下のフレーム部分のみが表示されるページをつくることは出来ますが、それじゃ次に別のパラメータで再検索するということが出来ないので、どうしても最初に述べたフレーム上下分割したページにしたいのです。

    • ベストアンサー
    • Perl

専門家に質問してみよう