ホームへ

【jQuery/クッキー】初回読み込み(アクセス)時のみ実行する方法

2022年07月19日

「新規ユーザーかリピーターかによって別の動きをさせたい!」

jQueryとクッキーを使って初回読み込み(アクセス)か2回目以降かを判定し、それぞれの条件で実行する方法を紹介します。

javascriptで実行する方法もありますが、今回はよりカンタンなjQueryで実行する方法を初回します。

初回読み込み時のみ実行

初回かどうかはクッキーを使って判定します。クッキーはブラウザに記憶させることができるものです。

クッキーをもっていなければ初回と判定しつつクッキーをもたせます。

クッキーをもっていれば2回目以降と判定できます。

まずhtmlに下記を記述します。後述するjQueryより先に記述しましょう。

<script src="https://code.jquery.com/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.min.js"></script>

一行目はjQueryを利用するためのコードです。

二行目はクッキーを利用するためのコードです。

下記jQueryが初回判定の動きです。

<script>
if ($.cookie('○○') != '××') {
    $(function() {
        /*初回実行内容をここに*/
        $.cookie('○○', '××' , { expires: 1 , path: '/' });
    });
};
</script>

まず、○○と××に任意の半角英数の名前をつけましょう。

「if ($.cookie('○○') != '××')」は「○○というクッキーの名前が××でなければ」という意味です。つまり「初回なら」という意味です。

「/*初回実行内容をここに*/」と書いている部分のコメントを消して初回実行内容をjQueryで指定しましょう。(具体例は後述)

2回目以降の実行については後述します。

「$.cookie('○○', '××')」で「○○というクッキーの名前に××をセット」します。これにより次は2回目以降と判定できます。

「expires: 1」はクッキーの保存期間、つまり「初回」の範囲です。単位は「日」です。

1を指定すると1日のうち初回か判定でき、365と指定すると1年のうち初回か判定できます。

これを指定しない場合、ブラウザを閉じるまでが期間となります。

「path: '/'」はクッキー適用範囲をサイト内すべてにするという意味です。つまり、サイト内の別ページに遷移しても「2回目以降」と判定されます。

これを指定しない場合、初回判定はページごととなります。そのページでリロードされたり戻ってきた場合は「2回目」ですが、別のページに遷移したときは「初回」と判定されます。

上記「expires」や「path」を指定しない、つまり消すときは「,」も気を付けましょう。複数指定するときは間に「,」が必要ですが、単一指定や最後の要素に「,」は不要となります。

expiresを指定しないとき

$.cookie('○○', '××' , { path: '/'});

pathを指定しないとき

$.cookie('○○', '××' , { expires: 1});

両方指定しないとき

$.cookie('○○', '××');

テストするとき

実行を確認したくてもリロードすると「2回目以降」となってしまいます。

初回実行を確認するには、逐一クッキー名を変えましょう。

【具体例】初回読み込み時 bodyにclassをつける

初回読み込み時にbodyにclass名をつけてみましょう。これによりあとはCSSだけで処理できるためjQueryに詳しくなくても動きをつけることができます。

<script>
if ($.cookie('cookie') != 'first') {
    $(function() {
        $("body").addClass("first");
        $.cookie('cookie', 'first' , { expires: 1 , path: '/' });
    });
};
</script>

「cookie」というクッキーに「first」という名前をつけました。

「$("body").addClass("first")」はbodyセレクタにfirstというclassを追加するという意味です。クッキー名とは関係ありません。

body以外のセレクタにも指定可能です。class名も変更可能です。

変更する場合は下記を参考にしてください。

クラス名がついたかどうかはDevToolsを使って確認しましょう。

CSSやhtmlの基本をしっかり理解すると、この記事の内容もより理解できるようになりますよ。

↓CSSやhtmlを楽しく学べるようにマンガを描きましたのでゼヒご覧ください↓

↑「副業してもう少し稼ぎたい!」というかたのために副業の方法も解説しています。

2回目以降の実行

2回目以降のときjQueryを実行したい場合はelseを使いましょう。

<script>
if ($.cookie('○○') != '××') {
    $(function() {
        /*初回*/
        $.cookie('○○', '××' , { expires: 1 , path: '/' });
    });
} else{
    $(function() {
        /*2回目以降*/
    });
};
</script>

初回の処理がない場合でもクッキー名を指定する処理は必須です。

【まとめ】初回読み込み時のみ実行する方法

まず下記を読み込みjQueryとクッキーを使えるようにする

<script src="https://code.jquery.com/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.min.js"></script>

クッキーがあるかないかで初回を判定する

<script>
if ($.cookie('○○') != '××') {
    $(function() {
        /*初回実行内容をここに*/
        $.cookie('○○', '××' , { expires: 1 , path: '/' });
    });
};
</script>

2回目以降の実行をする場合は下記のようにelseを追加

<script>
if ($.cookie('○○') != '××') {
    $(function() {
        /*初回*/
        $.cookie('○○', '××' , { expires: 1 , path: '/' });
    });
} else{
    $(function() {
        /*2回目以降*/
    });
};
</script>

以上、jQueryとクッキーを使って初回読み込み(アクセス)時、または2回目以降かを判定し、実行する方法でした。

「この記事の内容がよくわからなかった…」「なんかうまくいかなかった…」というかたは下記記事↓でhtmlとCSSの基本を学びましょう。
わからないまま突き進むより基本を学ぶのが結局近道です。

CSSやhtmlをマンガで学ぶ