2017-07-08 4 views
0

これは私が望んでいないものです:2ページ目の読み込み時に通知バーを隠すようにCookieを設定するにはどうすればよいですか?

  • 新しいユーザーが私のウェブサイトにアクセスします。ビューポートの下部に固定された通知バーが表示されます。
  • ユーザーはメニュー項目をクリックして別のページに移動します。クッキーは2ページ目の読み込み時に設定され、60日間表示バーを非表示にします(JavaScriptが非同期に読み込まれるようにするには、100%非表示にする必要があります。
  • ユーザーは「OK」ボタンをクリックして通知バーを閉じ、同じCookieを設定することもできます。

これが私のHTMLです:

<div id="cookie-message"> 
    <span>Cookie notice here <a href="#">Read more</a> <a href="#" id="cookie-message-close">Ok</a></span> 
</div> 

私はjQueryを使ってこれを行うことができますどのように?

ありがとうございます!

+0

2ページ目の読み込み時にCookieを設定する必要がありますか?最初のページの読み込み時にクッキーを削除することはできますが、最初にクッキーが存在しなかったので、バーはまだ表示されます。バーは最初は隠されていて、クッキーがない場合にのみ表示されるようにする必要があります。これは最初のページの読み込み時に表示され、後続のページ読み込み時には表示されません。ドロップしたクッキーの有効期限は60日です。 –

+0

それもうまくいくでしょう。私はちょうどそれをコード化する方法を知らない、と私は似たようなソリューションを見つけることができません。 – Skovsgaard

答えて

2

APIを使用してCookieを処理すると、作業がはるかに簡単になります。

まず、display: none;をdiv cookie-messageに入れます。隠されたかどうかの通知のロジックについて

、あなたは、ウィンドウの最初のロードでリスナーを置くことができます。

window.addEventListener('load', function(){...}); 

ウィンドウがロードされたとき、あなたが瞬間を得ることができるこの方法で。この時点で通知を読み取るためのクッキーがない場合、div($('#cookie-message').show())を表示してクッキーを設定します。既に設定されているクッキーがある場合は何もしません。

OKクリックについては、 ($('#cookie-message').show())を通知div要素を非表示にするには、リンクにクリックリスナを設定する。

はあなたを助けるために、私は私が言ったのsimple example例を作る。

+0

ありがとうございました!下の返信に記載されているいくつかの調整で、私はそれを修正することができました。:) – Skovsgaard

+0

PHPでクッキーをチェックし、クッキーが設定されている場合は 'in_array(" your-cookie-name "、array_keys($ _ COOKIE))'などのチェックを付けてクッキーの通知を完全に表示しないことを忘れないでください。 – kontur

0

おかげであなたの応答のために多くのことを、エンリケ。しかし、私は、 "jQuery $は、関数ではありません"というエラーになりました。

見つかりました「jQuery Cookie」は非推奨となり、js-cookieは新しいバージョンです。これを含めることで、古いクッキー機能を新しいものに変更することで、今すぐ完璧に動作します!私はWordpressの中で開発していますから、私はので、WordPressのnoConflict()モードでのjQueryに$を変更した

window.addEventListener('load', function(){ 
    jQuery('#cookie-message-close').click(function(){ 
     jQuery('#cookie-message').hide(); 
    }); 

    if (!Cookies.get("cookie-message-bar")) 
    { 
     jQuery('#cookie-message').show(); 
     Cookies.set('cookie-message-bar', true, { expires: 60 }); 
    } 
}); 

注:

これが私の最後のjQueryのコードは、 "JS-クッキー" を使用して、あります。

+1

それは本当ではありません。 expires値は整数で、日数でカウントされます。 https://github.com/js-cookie/js-cookie – Skovsgaard

+0

ご容赦ください。クッキーオブジェクトと組み込みライブラリを使用していたことが遅すぎることを認識しました。 – kontur

関連する問題