web関連
「jquery.cookie.js」の使い方で悪戦苦闘したので備忘録
トップページにアクセスしたらモーダルを表示させる記述を書きました。
しかし、トップページにアクセスする度にモーダルが開くの良くないと考えcookieを持たせて一定の期間はモーダルがでないようにしようとしたら手こずったので備忘録。
モーダルはjqueryのプラグイン「Modaal」を使いました。
使い方
「jquery.cookie.js」のCDNを読み込みます。
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.min.js"></script>
CDN使う方がサーバーにファイルを上げて読み込むより早いらしい
cookieを保存する方法
「jquery.cookie.js」の基本的な書き方は以下のように記述します。
$.cookie("KEY", "VALUE", { expires: 7 });
- KEY(名前)
- cookieの名前が入ります。
- VALUE(値)
- cookieの値が入ります。
- expires(パラメーター)
-
以下のパラメーターを設定できます。
expires: 7 有効期限(日数)、設定をしなかったらブラウザを閉じたらcookieが消える path:”/” 保存パス(ドメイン全体で利用する場合は’/’を設定) domain:”sample.com” 有効なドメイン secure:true HTTPS接続の時のみcookieを使えるようにするやつ(デフォルトはfalse)
「KEY」と「VALUE」の違いがいまいちわからなかったが「KEY」はそのcookieに名前を付ける変数・器みたいなもので、「VALUE」は変数に入れる値的な解釈で納得している
cookieを削除する方法
以下の記述でcookieを削除できる。
「KEY」の部分はcookieに指定した名前を入れてください。
$.removeCookie("KEY");
↓パスを指定して、cookie消せるみたいだけどよくわからなかった
$.removeCookie("KEY", { path: "/" });
正直「expires(有効期限)」しか使わない
実際に使用したコード
今回はトップページだけにモーダルを使いたかったので、footer.phpに「is_front_page()」使って記述したときのコード。
<script>
jQuery(function($){
// 確認用 ここから
var url = location.href;// 現在のページのURL取得
if (url == 'https://sample.com/#hoge' ) {
$.removeCookie("samplename");
}
// 確認用 ここまで
var CookieName = $.cookie("samplename");// cookieを保存
if (CookieName == "samplevalue") {
// cookieがある時の処理
return false;
} else{
// cookieが無い時の処理
$.cookie("samplename" , "samplevalue");
}
})
</script>
「確認用 ここから ~ 確認用 ここまで」の部分は、cookieを持たせちゃうとトップページのモーダルを確認できなくなっちゃうので、cookieを削除する用のURL(ページ内リンク)を作ってます。
アクセスすれば、再度モーダルを表示できるようになる(無くて大丈夫)
cookieを使った事ほとんどなかったから大変だった。
モーダルは「modaal」を使ったけど、「start_open:true」という「ページが読み込まれたらモーダル開いてね」というオプションあって楽だった。僕的は普段「remodal」使ってたけどモーダル開くのにURLに「#ほにゃらら」ってついてしまうので今回は「modaal」を使用。オプションとかで「#ほにゃらら」つかないようにできたかもだけど見てないや。