文字サイズや背景色とかをユーザー側で選択できるサイトを作る場合、選択された値をcookieに保存して管理することがあります。
jQueryとjquery.cookie.jsを使ってcookie制御する機会があったので注意点を。
——————————–
下のような構成のサイトで、
hoge1.html
— fuga(directory)
— hoge2.html
選択された値をこんな感じでcookieに詰め込みました。
$.cookie(’config’, settingvalue);
これでcookie「config」に、「settingvalue」の値が入るはずです。
が、どうも挙動がおかしいので調べてみたところ以下のような現象が起こっていました。
・hoge1.htmlで値を詰め込んだときは、hoge2.htmlに遷移した時も値が保持されている
・hoge2.htmlで値を詰め込んだときは、hoge1.htmlに遷移した時に値が保持されていない
そこでちょっと調べてみたところ、階層が変わるページ遷移を伴う場合、cookieのパスを明示的に指定しないと外れてしまうことがあるそうです。
というわけで
$.cookie(’config’, settingvalue,{path:’/’});
と修正したところ、解決。正常に動作するようになりました。
——————————–
調べてみた限りでは、パスを省略すると値を詰め込んだページのパスでのみ有効になるそうです。
確かにパスを指定する前は、それぞれのページで最後に設定された値が使われてたなー。
jquery.cookie.jsでcookie制御する場合は、例え階層変更が伴わなくてもパスは指定しといたほうがよさそうです。あとから階層追加になる可能性もなくはないし。

more from " ページ遷移によって、jquery.cookie.jsで設定したcookieが外れてしまう場合の対処法 "...