• ベストアンサー

IE5.5とNC4.75ではcookieをセットするメソッドが違うのですか?

現在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-kuma
  • ベストアンサー率50% (1122/2211)
回答No.1

IEは使わないのですが、NCで思い当たることをみっつ。 ひとつは、設定で、Cookie を受け付ける指定になってない。 「設定」の「詳細」のところで確認してみてください。 もうひとつは、ちょっと文法が気になること。質問に書かれたのは このままのソースなんでしょうか? セミコロンやイコールの数がちょっと足りない。参考URLには、 Netscape のページを示しておきます。英語が苦手なら、 「とほほのWWW」にも同様の記述があるので、参考にしてください。 最後は localhost だと Cookie のファイルに出力されない、という こと。 # どれかが該当すると良いのですが…

参考URL:
http://developer.netscape.com/docs/manuals/communicator/jsguide4/cookies.htm
youhi
質問者

お礼

すばやいご回答ありがとうございます。 >ひとつは、設定で、Cookie を受け付ける指定になってない。 確認しました。 cookieを受けつける指定になっているようです。 >セミコロンやイコールの数がちょっと足りない。 大変失礼いたしました。(汗 補足にソース全文(つまりイコールやセミコロンが正しく設定されているもの) を乗っけました。 >localhost だと Cookie のファイルに出力されない、という事。 う~ん。 現在、私はWebサーバ上にファイルをアップしてから確認しています・・・ ただサーバにはLANで繋がってるんですけど、その場合も駄目なんですかね。

youhi
質問者

補足

>質問に書かれたのはこのままのソースなんでしょうか? ソース全部書くのはちょっとしのびなかったので 少し省略してしまいました以下がソースです。 ----ここから-----------> <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>

その他の回答 (2)

  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.3

全部はずれましたか (^^; > 現在、私は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; # 状況は絞れてきたものの、やっぱり解決する自信はないです (^^;

youhi
質問者

お礼

回答ありがとうございます。 その後お二人のおっしゃる方法を 全て試してみたのですがやっぱり私のNCのcookie.txt にクッキーを吐くことができませんでした。 カンマもスペースも全てチェックしてみましたけど・・・。 駄目でした。(TT; きっともう私のNCが壊れているのでしょう。。。(泣) とりあえず今からNC入れなおしてみて、(おそらく無駄な努力) それで動かないようったらもう諦めます。。。(号泣) こんな馬鹿な質問に答えてくださったa-kumaさんARCさん 有難うございました。

  • ARC
  • ベストアンサー率46% (643/1383)
回答No.2

ネスケは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); };

youhi
質問者

お礼

すばやいご回答ありがとうございます。 ";expires=~~~~~ の最後にはGMTの表記が必要なのですね。 試してみようと思います。