jquery.cookie.jsの操作方法を解説|サンプルコードも紹介
- システム
エンジニア - jquery.cookie.jsの操作方法を教えてください。
- プロジェクト
マネージャー - jquery.cookie.jsの操作方法を見ていきましょう。
jQueryのcookieとは
jQueryは様々な機能を持つJavaScriptのライブラリですが、標準で存在しない機能もあります。その1つがcookie(クッキー)の操作です。ところがjquery.cookie.jsを追加すれば、jQueryでもcookieの操作が可能になるのです。
jQueryを利用するには、htmlファイルのheadタグ内に以下のような記述が必要です。
<script src=”https://code.jquery.com/jquery-3.5.1.min.js”></script>
そしてjquery.cookie.jsを利用するには、さらに以下を追加してください。
<script src=”https://cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.min.js”></script>
cookieとは何か?
そもそもcookieとは何なのでしょうか。cookieはサイトを閲覧した時に、そこで利用するデータを保存してくれる機能です。IDやパスワードなどサイトで利用する情報などが記録されます。この機能のおかげでサイトを訪れるたびにログインをする必要がなくなり、以前の状態のまま利用を再開することができます。
cookieの読み込みと保存はそのデータを利用するサイトだけが行えるので漏洩の危険はありませんが、パソコンやスマホを他人が操作すると、IDとパスワードを知らなくても利用できてしまう可能性はあります。そういった理由から、cookieを利用していることを最初に明示するサイトも多くなっています。
cookieメソッドで利用可能なパラメータとは?
ここからは、cookieメソッドで利用可能なパラメータを紹介します。cookieメソッドで指定するパラメータは基本的に文字列を使用することになります。cookieの有効期間などの設定を指定する場合はJsonを使用しましょう。
1:cookieの作成
セッションcookieを作成する場合は以下のように2つの引数を指定します。第1引数にcookieの名前(キー)、第2引数にcookieの値を指定しましょう。cookieは、キーと値の組み合わせで作成します。
コード
1
|
$.cookie('name', ‘value’);
|
2:期限付きcookie
次に、期限付きcookieの作成方法です。期限を指定することで、その期間だけ有効なcookieを作成することができます。cookieを作成する時の引数に加え第3引数にJson形式で期間を指定します。
コード
1
|
$.cookie('name', 'value', { expires: 7 });
|
3:cookieの取得
次はcookieの取得です。cookieのデータを取得する場合は、第1引数のみ指定します 。文字列で作成の時に指定したcookieの名前を指定しましょう。返り値にcookieの値が返されます。
コード
1
2
|
$.cookie('name');
// “value”
|
jquery.cookie.jsの操作方法6つ
ここからは、jquery.cookie.jsの操作方法を6つ紹介します。簡単なサンプルコードからcookieの取得、削除や、jquery.cookie.jsを使用せずcookieの操作をした場合の処理の違いを解説していきます。
1:cookieの簡単なサンプル
それでは簡単なサンプルを実行してみましょう。htmlのbodyタグ内は以下のように記述します。
リロードでカウントします。
jQueryはscriptタグ内に以下のように記述します。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
$(document).ready(function() {
var tc = $.cookie(‘test_cookie’);
var cnt;
if(tc){
cnt = tc;
$(‘div’).text(tc);
} else {
$(‘div’).text(0);
cnt = 0;
}
cnt++;
if (cnt > 10) {
$.removeCookie(‘test_cookie’);
$(‘div’).append(‘ 消しました’);
} else {
$.cookie(‘test_cookie’,cnt);
}
});
|
2:$.cookie(‘cookie名’)で読み込む
jQueryのコードを解説しましょう。まず$(document).ready(function() {~});とありますが、これはページ全体を読み込んだらfunctionの内容を実行するという意味です。その中ではまず$.cookie(‘test_cookie’)でtest_cookieと言う名前のcookieを読み込んでいます。
3:$.removeCookieで削除ができる
cookieを読み込めたらcntに代入して、$(‘div’).textでdivタグにその内容を追加して表示します。読み込めなかった場合は0を表示し、cntも0で初期化します。その後cntを1加算し、10を超えたら$.removeCookieでcookieを削除して、appendで「消しました」というメッセージをdivタグに追加します。
cntが10を超えなければ$.cookieでtest_cookieに加算したcntの内容を保存しています。cookieの読み込みと保存、削除は簡単に行うことができます。
4:オプションの設定
$.cookieは保存時にオプションをつけることができます。今回のサンプルの保存している箇所を以下のようにすることができます。
$.cookie(‘test_cookie’,cnt,{expires:10, path:’/’, domain:’~.com等のドメイン名’, secure:true});
expires:は保存する日数です。省略するとブラウザを終了した時に消えてしまうので、指定は必須でしょう。path:はcookieを使用するURLのパスです。サイト全体で使用する場合は/にします。domainはこのcookieの有効なドメイン、secureはtrueにするとhttps://のWebページのみ有効になります。
5:jquery.cookie.jsを使わない場合
jquery.cookie.jsを使わずにJavaScriptだけでcookieを扱うことも可能です。ここまでのサンプルをjquery.cookie.jsを使わずに書き換えたものが以下になります。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
$(document).ready(function () {
var cks = document.cookie;
var cks_ary = cks.split(';');
var val;
for (var c of cks_ary) {
var ary = c.split('=');
if (ary[0] == 'test_cookie') {
val = ary[1];
}
}
if (val) {
cnt = val;
$('div').text(cnt);
} else {
$('div').text(0);
cnt = 0;
}
cnt++;
if (cnt > 10) {
document.cookie = 'test_cookie =; expires = 0';
$('div').append(' 消しました');
} else {
document.cookie = 'test_cookie =' + cnt;
}
});
|
6:document.cookieは全部のcookieが返ってきてしまう
jquery.cookie.jsの場合は$.cookie(‘Key名’);でcookieを取得できます。ところがJavaScriptの場合、document.cookieでしかデータを取得できず、それで取得すると、
key名=値;key名=値;key名=値…
のようにすべてのcookieがつながった1つの文字列として帰ってきます。そのためこのサンプルのように、まずsplitで;で区切り、forループでさらに=で区切ってkeyを1つずつチェックして、欲しいkeyだったら値を取得するといった処理が必要になります。
cookieを使ったサンプルコードとは?
Jquery.cookie.jsでcookieを使用したサンプルコードと実際のHTMLコンテンツを作成しました。cookieを使用している部分は、JavaScriptになります。
キャンペーン情報ボックスの設置コードサンプル
cookieを使用すれば閲覧者の訪問情報を保持することができるため、一度非表示にしたらその後のページ遷移で表示させないようにすることが可能です。
今回は、キャンペーン情報ボックスを例に、cookieを使用して一度非表示にしたらその後表示をさせないJavaScriptのコードを紹介します。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
|
<script async src="//jsfiddle.net/dou4j9a7/4/embed/js,html,css/"></script>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"
integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.min.js"
integrity="sha512-3j3VU6WC5rPQB4Ld1jnLV7Kd5xr+cq9avvhwqzbH/taCRNURoeEpoPBK9pDyeukwSxwRPJ8fDgvYXd6SkaZ2TA=="
crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<div style="height: 350px;position: relative;background: #f1f1f1;border-radius: .2em;">
<div class="jquery-cookie-js-campaign-container">
<div class="jquery-cookie-js-campaign-container-content">
<div class="jquery-cookie-js-campaign-container-title">
<p class="jquery-cookie-js-campaign-container-title-main">キャンペーン情報</p>
</div>
<div class="jquery-cookie-js-campaign-container-body">
<div class="jquery-cookie-js-campaign-container-body-discription">
今なら限定商品が当たる!?
</div>
<div class="jquery-cookie-js-campaign-container-body-deadline">
<p class="jquery-cookie-js-campaign-container-body-deadline-title">応募締め切り</p>
<p class="jquery-cookie-js-campaign-container-body-deadline-date"></p>
</div>
<div class="jquery-cookie-js-campaign-container-body-buttom">
<button class="jquery-cookie-js-campaign-container-body-buttom-submit">応募する</button>
</div>
</div>
<div class="jquery-cookie-js-campaign-container-close-button">
×
</div>
</div>
</div>
</div>
<style>
.jquery-cookie-js-campaign-container {
position: absolute;
top: 5%;
left: 0;
right: 0;
bottom: 0;
margin: auto;
}
.jquery-cookie-js-campaign-container .jquery-cookie-js-campaign-container-content {
position: relative;
-webkit-box-shadow: 0 0 3px 0 #333;
box-shadow: 0 0 3px 0 #333;
width: -webkit-fit-content;
width: -moz-fit-content;
width: fit-content;
margin: auto;
text-align: center;
padding: 30px 40px;
}
.jquery-cookie-js-campaign-container .jquery-cookie-js-campaign-container-content .jquery-cookie-js-campaign-container-title .jquery-cookie-js-campaign-container-title-main {
font-size: 120%;
font-weight: bold;
position: relative;
display: inline-block;
border-bottom: 1px solid #bfbfbf;
}
.jquery-cookie-js-campaign-container .jquery-cookie-js-campaign-container-content .jquery-cookie-js-campaign-container-title .jquery-cookie-js-campaign-container-title-main::before {
content: "NEW!";
padding: 4px;
background-color: #30ca357d;
border-radius: 0.2em;
font-size: 60%;
position: absolute;
left: -20%;
top: -35%;
-webkit-transform: rotate(340deg);
transform: rotate(340deg);
}
.jquery-cookie-js-campaign-container .jquery-cookie-js-campaign-container-content .jquery-cookie-js-campaign-container-body .jquery-cookie-js-campaign-container-body-discription {
background: #4884ce;
padding: 20px;
border-radius: 0.2em;
color: white;
font-weight: bold;
}
.jquery-cookie-js-campaign-container .jquery-cookie-js-campaign-container-content .jquery-cookie-js-campaign-container-body .jquery-cookie-js-campaign-container-body-deadline {
margin: 20px 0 10px;
text-align: left;
font-size: 80%;
}
.jquery-cookie-js-campaign-container .jquery-cookie-js-campaign-container-content .jquery-cookie-js-campaign-container-body .jquery-cookie-js-campaign-container-body-deadline > * {
margin: 0;
}
.jquery-cookie-js-campaign-container .jquery-cookie-js-campaign-container-content .jquery-cookie-js-campaign-container-body .jquery-cookie-js-campaign-container-body-deadline .jquery-cookie-js-campaign-container-body-deadline-date {
color: #dc4040;
}
.jquery-cookie-js-campaign-container .jquery-cookie-js-campaign-container-content .jquery-cookie-js-campaign-container-body .jquery-cookie-js-campaign-container-body-buttom .jquery-cookie-js-campaign-container-body-buttom-submit {
width: 100%;
margin: 4px 0;
padding: 8px 4px;
background-color: #ec7c7c;
border: unset;
border-radius: 0.2em;
color: white;
cursor: pointer;
}
.jquery-cookie-js-campaign-container .jquery-cookie-js-campaign-container-content .jquery-cookie-js-campaign-container-close-button {
position: absolute;
right: 0;
top: 0;
padding: 0px 8px 2px;
cursor: pointer;
}
@media screen and (max-width: 768px) {
.jquery-cookie-js-campaign-container .jquery-cookie-js-campaign-container-content {
padding: 2% 4%;
}
}
</style>
<script>
function getContainer() {
return $(".jquery-cookie-js-campaign-container")
}
function getCloseButton() {
return $(".jquery-cookie-js-campaign-container-close-button")
}
function getDeadLineDateElem() {
return $(".jquery-cookie-js-campaign-container-body-deadline")
.find(".jquery-cookie-js-campaign-container-body-deadline-date")
}
function getDeadLineDate() {
let youbi = ["日", "月", "火", "水", "木", "金", "土"]
let date = new Date()
date.setDate(date.getDate() + 7)
return date.getFullYear() + "年" +
(date.getMonth() + 1) + "月" +
(date.getDate()) + "日(" +
youbi[date.getDay()] + ")" + " 23:59"
}
$(function () {
getDeadLineDateElem().text(getDeadLineDate())
var cookie = $.cookie('jquery-cookie-js-campaign')
if (cookie) {
getContainer().slideToggle()
}
getCloseButton().on('click', function () {
getContainer().slideToggle()
$.cookie('jquery-cookie-js-campaign', 'close')
});
})
</script>
|
カウントアップ・リセットのサンプル
次は、cookieを使用してボタンのクリック数を保持する方法です。カウントアップボタンで1ずつ加算されます。この時cookieの値も加算することで、次にページを訪れた時にも同じ数値を表示することができます。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
<script async src="//jsfiddle.net/e0na1o2p/2/embed/js,html,css/"></script>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"
integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.min.js"
integrity="sha512-3j3VU6WC5rPQB4Ld1jnLV7Kd5xr+cq9avvhwqzbH/taCRNURoeEpoPBK9pDyeukwSxwRPJ8fDgvYXd6SkaZ2TA=="
crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<div style="background: #f1f1f1;border-radius: .2em;">
<div class="jquery-cookie-js-count-container">
<div class="jquery-cookie-js-count-container-content">
<div class="jquery-cookie-js-count-container-content-main">
<span class="jquery-cookie-js-count-container-content-main-count">0</span>
</div>
<button class="jquery-cookie-js-count-container-content-count-up">カウントアップ</button>
<button class="jquery-cookie-js-count-container-content-count-reset">リセット</button>
</div>
</div>
</div>
<style>
.jquery-cookie-js-count-container {
padding: 10px 0;
}
.jquery-cookie-js-count-container .jquery-cookie-js-count-container-content {
width: -webkit-fit-content;
width: -moz-fit-content;
width: fit-content;
margin: auto;
padding: 10px 20px;
-webkit-box-shadow: 0 0 3px 0 #333;
box-shadow: 0 0 3px 0 #333;
border-radius: 0.2em;
text-align: center;
}
.jquery-cookie-js-count-container .jquery-cookie-js-count-container-content .jquery-cookie-js-count-container-content-main {
font-size: 120%;
font-weight: bold;
margin: 10px 0 20px;
}
</style>
<script>
$(function () {
var cookie = Number($.cookie('jquery-cookie-js-count'))
if (!cookie) {
cookie = 0
}
$('.jquery-cookie-js-count-container-content-main-count').text(cookie)
$('.jquery-cookie-js-count-container-content-count-up').on(
'click',
function () {
cookie += 1
$.cookie('jquery-cookie-js-count', cookie)
$('.jquery-cookie-js-count-container-content-main-count').text(cookie)
}
)
$('.jquery-cookie-js-count-container-content-count-reset').on(
'click',
function () {
cookie = 0
$.cookie('jquery-cookie-js-count', cookie)
$('.jquery-cookie-js-count-container-content-main-count').text(cookie)
}
)
})
</script>
|
jquery.cookie.jsのメリット
なお、このサンプルはサーバー上で実行しないと正しく動作しません。ローカルPC環境ではcookieを使う意味がないため、cookieの読み込みや保存が行えないのです。
実行すると0という数字が表示されます。F5でブラウザをリロードすると1,2,3…と増えていって、10で消しましたと表示されて、リロードするとまた0に戻ります。この間、いったんページを閉じて又開いても、続きからカウントされます。これがcookieの機能です。
jquery.cookie.jsのデメリット
cookieに保存する時も、’キー名=’ + 変数名のようにして1つの文字列として保存する必要があります。またcookieを消す場合はexpires=0にして期限なしにしてすぐ消えるようにするといった、スマートでないやり方をするしかありません。
このようにJavaScriptのcookie操作はあまり使いやすくないのです。jQueryのjquery.cookie.jsを使った方が手軽でシンプルなコードになることが、分かって頂けたのではないでしょうか。
- システム
エンジニア - jquery.cookie.jsの操作方法にはいくつかあるのですね。
- プロジェクト
マネージャー - はい。紹介した方法を参考にして、実際にコードを書いてみましょう。
jQueryのjquery.cookie.jsは便利
jQueryのjquery.cookie.jsについて解説しましたが、ご理解頂けましたでしょうか。
JavaScriptでもcookie操作はできますが、jQueryのjquery.cookie.jsの方が使い易いです。
そのため、jQueryのjquery.cookie.jsは便利だといえるでしょう。
FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
株式会社オープンアップシステムはこんな会社です
秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
数多くのエンジニアが集まります。
-
スマホアプリから業務系システムまで
スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。
-
充実した研修制度
毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。
-
資格取得を応援
スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。
-
東証プライム上場企業グループ
オープンアップシステムは東証プライム上場「株式会社オープンアップグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
株式会社オープンアップシステムに興味を持った方へ
株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。
新着案件New Job
-
開発エンジニア/東京都品川区/【WEB面談可】/在宅ワーク
月給29万~30万円東京都品川区(大崎駅) -
遠隔テストサービス機能改修/JavaScript/東京都港区/【WEB面談可】/テレワーク
月給45万~60万円東京都港区(六本木駅) -
病院内システムの不具合対応、保守/東京都豊島区/【WEB面談可】/テレワーク
月給30万~30万円東京都豊島区(池袋駅) -
開発/JavaScript/東京都豊島区/【WEB面談可】/テレワーク
月給50万~50万円東京都豊島区(大塚駅) -
債権債務システム追加開発/東京都文京区/【WEB面談可】/在宅勤務
月給62万~67万円東京都文京区(後楽園駅) -
PMO/東京都豊島区/【WEB面談可】/在宅勤務
月給55万~55万円東京都豊島区(池袋駅)