プロが教えるわが家の防犯対策術!

現在JavaScriptの<SCRIPT>タグ内で宣言されている配列データを

webページ上に表示されているボタンを押すことで
cookieに吐くような関数を作成したのですが

IE5.5からボタンを押した場合はcookieファイルを吐き出していることを確認できたのですが
NC4.75ではcookie.txtが更新されていることを確認できませんでした。

(株)翔泳社 JavaScript辞典 アンク著

を見る限りでは
IE5.5でもNC4.75でも
document.cookie ="keyName" + "配列" + "expires =Mon.31-Dec-2001 23:59:59;";
で書き込めると思うのですが・・・。

キー名と有効期限の他にもセットしなければいけない値があるんでしょうか?

A 回答 (3件)

IEは使わないのですが、NCで思い当たることをみっつ。



ひとつは、設定で、Cookie を受け付ける指定になってない。
「設定」の「詳細」のところで確認してみてください。

もうひとつは、ちょっと文法が気になること。質問に書かれたのは
このままのソースなんでしょうか?

セミコロンやイコールの数がちょっと足りない。参考URLには、
Netscape のページを示しておきます。英語が苦手なら、
「とほほのWWW」にも同様の記述があるので、参考にしてください。

最後は localhost だと Cookie のファイルに出力されない、という
こと。

# どれかが該当すると良いのですが…

参考URL:http://developer.netscape.com/docs/manuals/commu …

この回答への補足

>質問に書かれたのはこのままのソースなんでしょうか?

ソース全部書くのはちょっとしのびなかったので
少し省略してしまいました以下がソースです。

----ここから----------->
<HTML>
<SCRIPT LANGUAGE="JavaScript">
var str = "|||||||||+|||||||||||+11111111";

function hoge(str){
var strdata;
var month,weeks,today,y,m,d,w;
today = new Date()
weeks = new Array("Sun","Mon","Tue","Wed","Thu","Fry","Sat");
month = new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");

y = today.getFullYear();
m = month[today.getMonth()+1];
d = today.getDate();
w = weeks[today.getDay()];
strdata ="strdata = "+ str+";";
strdata += "expires ="+w+ "," +d+ "-" +m+ "-" +y+ " 23:59:59;";
document.cookie = strdata;
alert(strdata) ;
}
</SCRIPT>
<BODY>
<FORM NAME="FORM1">
<INPUT type="button" value="せっとクッキー" onClick="hoge(str);">
</FORM>
</BODY>
</HTML>

補足日時:2001/05/24 11:17
    • good
    • 0
この回答へのお礼

すばやいご回答ありがとうございます。

>ひとつは、設定で、Cookie を受け付ける指定になってない。

確認しました。
cookieを受けつける指定になっているようです。

>セミコロンやイコールの数がちょっと足りない。
大変失礼いたしました。(汗
補足にソース全文(つまりイコールやセミコロンが正しく設定されているもの)
を乗っけました。

>localhost だと Cookie のファイルに出力されない、という事。

う~ん。
現在、私はWebサーバ上にファイルをアップしてから確認しています・・・
ただサーバにはLANで繋がってるんですけど、その場合も駄目なんですかね。

お礼日時:2001/05/24 11:41

ネスケはIEよりも構文に厳しいのでエラーになってしまったのかも。

ひょっとしたら、
expires =Mon.31 …
をexpires =Mon, 31 にすると動くかも(ピリオドでなく、コンマ)
あと、配列のあとに「;」が無いのも気になります。


とりあえず、IE5.5, NN6.01対応のコードを書いてみました。 NN4.75は手元に無いんで、試してません。

function SetCookie(){
  var hoge = new Array(1,2,3) ;
  document.cookie="hogeValue=" + hoge + "; expires=Fri, 01-Jun-2001 00:00:00 GMT;";
  alert (document.cookie);
};
    • good
    • 0
この回答へのお礼

すばやいご回答ありがとうございます。

";expires=~~~~~

の最後にはGMTの表記が必要なのですね。
試してみようと思います。

お礼日時:2001/05/24 11:50

全部はずれましたか (^^;



> 現在、私はWebサーバ上にファイルをアップしてから確認しています・・・
> ただサーバにはLANで繋がってるんですけど、その場合も駄目なんですかね。

は、OKですよ。

ソースに書いてある記述で、Netscapeのドキュメントの記載と違うところが
怪しいですね。

・イコールの前後の空白を取る
・「日」が二桁になっているか
・曜日の後のカンマの後に空白を付ける

かなあ。三番目のは ARC さんの記述によると必要無いかも。
後、GMT の表記は無くてもOKですよ。手元に、無くても
cookie を保存できているコードがあります。

何かの参考になるかもしれないので、手元のコードのひとつを
載せておきます。配列を保存しているわけではないですが、
NC4.7では動作してます。

tmp = "ID=" + id.value + "; "
tmp += "path=/cgi-bin/XXXX.rb; "
tmp += "expires=Fri, 31-Dec-2030 23:59:59; ";
document.cookie = tmp;

# 状況は絞れてきたものの、やっぱり解決する自信はないです (^^;
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

その後お二人のおっしゃる方法を
全て試してみたのですがやっぱり私のNCのcookie.txt
にクッキーを吐くことができませんでした。

カンマもスペースも全てチェックしてみましたけど・・・。
駄目でした。(TT;

きっともう私のNCが壊れているのでしょう。。。(泣)

とりあえず今からNC入れなおしてみて、(おそらく無駄な努力)
それで動かないようったらもう諦めます。。。(号泣)


こんな馬鹿な質問に答えてくださったa-kumaさんARCさん
有難うございました。

お礼日時:2001/05/25 13:58

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