アプリ版:「スタンプのみでお礼する」機能のリリースについて

いつもお世話になっています。
よくある事のような気がするのですが
私の探し方が悪いのか発見できませんでしたので、質問させてください。

■状況
・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)はそれぞれのメニューを表示させたいだけですので
もしフレームが無理でしたらレイヤーでもいけそうですので
どなたか方法をご存知でしたら教えてやってください。
どうぞ、よろしくお願いします!(つω-`。)

A 回答 (4件)

そこはもうCGIの仕事だと思う・・・


javascriptでcookieを扱えるけどブラウザが終了すると消えちゃうから使い物にならないし。

この回答への補足

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

補足日時:2006/10/03 00:28
    • good
    • 0

クッキーを使えばよいと思います(適当な期限を設定すれば,ブラウザを終了しても消えません)。

(本論と無関係ですが"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;の入れる場所かなんかがおかしいのかな?と思うのですが・・・。

補足日時:2006/10/03 00:33
    • good
    • 0

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>

補足日時:2006/10/04 00:24
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/10/04 00:38

すみません。

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

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!