« 前のひとこと | トップページ | 次のひとこと »

cocolog:70605927

JavaScript で IE だけ Set Cookie がうまくいかないことに悩まされていたが、やっと解決した。path にファイル名が含まれているのが原因で、最後の "/" 以降を落とすとうまくいった。 (JRF 1039)

JRF 2011年11月19日 (土)

Firefox 8 や Google Chrome 15 ならうまくいくのに、InternetExplorer 9 でだけ、Cookie がセットされなかった。プライバシーオプションの設定等を疑ったのだが、そこには、Cookie は受諾して、拒否したものはないとある。

そこで、expires を疑った。Date の toGMTString の日付書式がブラウザごとに違うからである。ところが、これを toUTCString にしてもうまくいかない。

JRF 2011年11月19日 7872

しかたないので、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

« 前のひとこと | トップページ | 次のひとこと »

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/93568/53282839

トラックバックのポリシー

他サイトなどからこの記事に自薦された関連記事(トラックバック)はまだありません。

このころのニュース