1

私は彼らが訪問したときにポップアップし、その中にいくつかの情報を持っているウェブサイトにFancyBoxを持っています。ユーザーがクリックできるようなボタンを追加したいのですが、約1か月間メッセージが表示されないようにCookieを設定します。

このようなことになると私はまったく役に立たないので、誰かが私に何をすべきかを教えてくれるなら、それは素晴らしいことです。

これが私がこれまでに持っているものです。下部に、提案されたCookie( "noShow")のアンカーになると思われるものを追加しましたが、それがそのように機能するかどうかはわかりません。この前にFancyBox用にすべてのjQueryスクリプトをロードし、その後にjquery.cookie.jsもロードしました。重要な場合は、FancyBox2の最新のダウンロードを使用しています。

<script type="text/javascript"> 
function openFancy() { 
setTimeout( function() {$('#autoStart').trigger('click'); },1000);
} 

$(document).ready(function() {
    openFancy();
    $('#autoStart').fancybox();
});
</script>

<!-- This is the popup itself -->
<a id="autoStart" style="display:none" href="#autoFancybox"></a>
 <div style="display: none;">
  <div id="autoFancybox" style="width: 800px">
   <div>
    <!-- My content for the Fancybox is here -->
    <br />
    <p style="font-size:10px" align="right">
    <a id="noShow" href="#noShow">Don't me show this message again</a>
    </p>
   </div>
  </div>
 </div>

ありがとう、リアム。

4

2 に答える 2

6

fancybox を起動する関数とは別に、ボタンがクリックされたとき の Cookie の有効期限を設定する別の関数を作成します。

function dontShow(){
 $.fancybox.close(); // optional
 $.cookie('visited', 'yes', { expires: 30 }); // set value='yes' and expiration in 30 days
}

... 次に、Cookie を検証し、fancybor を起動するかどうかを決定します。

$(document).ready(function() {
    var visited = $.cookie('visited'); // create cookie 'visited' with no value
    if (visited == 'yes') {
        return false;
    } else {
        openFancy(); // cookie has no value so launch fancybox on page load
    }
  $('#autoStart').fancybox(); // bind fancybox to selector
}); // ready

...今あなたのボタンのhtml

<a id="noShow" href="javascript:dontShow()">Don't show this message again</a>

実際のデモを見る

于 2012-12-17T06:02:26.607 に答える
0

チェックアウトする必要がある Cookie 管理用の優れた jQuery プラグインがあります - https://github.com/carhartl/jquery-cookie

ユーザーがサイトにアクセスしたときに、Cookie をチェックして、以前にアクセスしたことがあるかどうかを確認できます。そうでない場合は、アニメーションを表示して Cookie を設定します。実行されている場合は、アニメーションを実行しないでください。

jquery-cookie のドキュメントを見ると、次のように 7 日間の Cookie を設定できます。したがって、コードは次のようになります。

// Make sure DOM has fully loaded before running code
$(function(){
    if( ! $.cookie('visited')){
        // Your code here
    } else {
        $.cookie('visited', 'yes', { expires: 7 });
    }
});
于 2012-12-12T15:53:46.133 に答える