cocolog:70605927
JavaScript で IE だけ Set Cookie がうまくいかないことに悩まされていたが、やっと解決した。path にファイル名が含まれているのが原因で、最後の "/" 以降を落とすとうまくいった。 (JRF 1039)
JRF 2011年11月19日 (土)
しかたないので、document.cookie にいろいろな例を直接代入して、その後 alert(document.cookie) ですぐに表示させてみた。
すると、path=/ だとうまくいくのに、path に location.pathname をほうりこむとおかしくなっているのに気づいた。
確かにどこかで、path にページを指定してもそのディレクトリ単位でしか効かないと読んだが、効かないどころか設定もできないことになっていた。
JRF 2011年11月19日 8506
だから、例えば、
<pre>
var path =location.pathname;
if (path.lastIndexOf("/") > 0) {
path = path.substring(0, path.lastIndexOf("/") + 1);
}
</pre>
…などとしてから path を文字列に足す必要がある。
JRF 2011年11月19日 6770
[google:JavaScript Cookie IE error] とかでも見つからないが、原因がわかったあと調べると、いくつか言及がある。
《Javascriptのdocument.cookieのpath》
http://www.synck.com/contents/technote/technote_1230518860.html
JRF 2011年11月19日 7840
Firefox 8 や Google Chrome 15 ならうまくいくのに、InternetExplorer 9 でだけ、Cookie がセットされなかった。プライバシーオプションの設定等を疑ったのだが、そこには、Cookie は受諾して、拒否したものはないとある。
そこで、expires を疑った。Date の toGMTString の日付書式がブラウザごとに違うからである。ところが、これを toUTCString にしてもうまくいかない。
JRF 2011年11月19日 7872