いつもお世話になっています。
よくある事のような気がするのですが
私の探し方が悪いのか発見できませんでしたので、質問させてください。
■状況
・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)はそれぞれのメニューを表示させたいだけですので
もしフレームが無理でしたらレイヤーでもいけそうですので
どなたか方法をご存知でしたら教えてやってください。
どうぞ、よろしくお願いします!(つω-`。)
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://.....)では,クッキーがセットされないので,ファイルをサーバに置いてデバッグしてください。
セットされているクッキー(の値)の読み出し方は分かりますか?
この回答への補足
お返事ありがとうございます!!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;の入れる場所かなんかがおかしいのかな?と思うのですが・・・。
No.3ベストアンサー
- 回答日時:
No.1です。
お気づきのように,インラインフレームがまだ定義されていない時点で,それへアクセスしようとしています。解決法はいろいろあると思いますが,たとえば,
window.onload=function(){
window.fframe.location.href=frameurl;
}
のようにしてはいかがでしょうか。
この回答への補足
ありがとうございます!!おかげで表示できました!!
私と同じような事を探していらっしゃる方が居るかも・・・という事で、作成できたソースを置いていかせてください。
(クッキーの中身別に表示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>
お返事ありがとうございます!!
教えて頂いたタグを入れたら出来ました。ずっと悩んでいたので、凄く嬉しいです。何度も教えて頂いて、どうもありがとうございます!!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript スマホ上で、左右スワイプで次のページに移動させたいです 2 2022/11/11 17:04
- C言語・C++・C# 【C++】IDirect3DSurfaceのディープコピーは可能ですか? 1 2022/07/06 02:47
- 画像編集・動画編集・音楽編集 動画をディスク作成すると画像が乱れる。 4 2022/06/24 07:49
- SEO googleサーチコンソールでの重複ページ(ダブルスラッシュ) 3 2023/06/12 15:00
- HTML・CSS ホームページをちょっと加工する程度の無料または古くて安く購入できる作成ソフトを教えてください 5 2022/12/16 12:17
- アプリ Edgeを操作するアプリについて 4 2023/05/11 22:48
- HTML・CSS HTMLを正しく表示させるには 2 2023/06/18 09:12
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
- ホームページ作成・プログラミング 検索にヒットしないページを作った後の確認方法 3 2022/07/21 17:37
- HTML・CSS リンクバナーのHTMLタグ。画像を変えたり、設置位置を変えるとバナー貼付け側はどう見える? 2 2023/02/01 12:01
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Safariで<iframe>のinnerHTMLを...
-
エラー:書き込みができません ...
-
上と左にフレームわけされてい...
-
別ページのインラインフレーム...
-
インラインフレームで表示され...
-
スマホ上で、左右スワイプで次...
-
<a href="#" …>の意味を教えて...
-
別ファイルのfunctionの読み込み方
-
function の return 値を表示し...
-
JavascriptとJqueryを混在し記述
-
jQueryでdivをクリックし別窓で...
-
(Javascript)印刷するファイル...
-
JavaScriptでiframeの内容を「...
-
base64encodeでの文字化けについて
-
相対パスと絶対パスの速度
-
bodyにidをつける理由は何ですか?
-
以下の内、どれでも良いので可...
-
外部ファイル名を変数で指定で...
-
サブウィンドウの大きさを複数...
-
複数のJavascriptを1つのscrip...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
スマホ上で、左右スワイプで次...
-
インラインフレームで表示され...
-
フレームを跨ぐドロップダウン...
-
子フレームの自動リロードは可...
-
別ページのインラインフレーム...
-
インラインフレームをドラッグ...
-
<iframe>~</iframe>内のwindow...
-
親フレームのURLによって、...
-
jqueryを利用してインラインフ...
-
エラー:書き込みができません ...
-
submitボタンで他のフレームを...
-
親フレームからkeydownイベント...
-
フレームでの右クリック禁止
-
別フレームの中にあるインライ...
-
フレームが入れ子状態です。フ...
-
別画面の関数の呼び出し
-
ワンクリック、ダブルウインド...
-
チェックボックスのチェックを...
-
親ウィンドウの別フレームを子...
-
フレーム分割すると動かない
おすすめ情報