4

ユーザーが初めてサイトにアクセスしたときに div を表示しようとしています。私はクッキーを使用してこれを行っていると確信していますが、これは経験が限られており、理解するのに苦労しています. 私がオンラインで見つけたほとんどのチュートリアルは、クッキーがユーザーに名前のようなものを入力するよう促し、後でそれを思い出すようにすることについてのみ話していますが、これはまったく望んでいません。ユーザーが以前に自分のサイトにアクセスしたことがあるかどうかを Cookie に確認させ、そうでない場合は、通常は非表示の div を表示させたいだけです。

ここに私が試したことがあり、うまくいかなかったことがあります。

HTML:

<head>
   <script type="text/javascript" src="annoy.js"></script>
   <script type="text/javascript" src="scripts.js"></script>
</head>

...
<body>
    <div id="overbox3">
         <div id="infobox3">
              <p>This is the cookie box</p>
              <br />
              <p>it should only show once </p>
              <br/><br/>
         </div><!-- end infobox3 --> 
    </div> <!-- end overbox3 -->
</body>

CSS (問題なく動作するためあまり関係ありません):

#overbox3 {
         position: fixed;
         top: 0px;
         left: 0px;
         width: 100%;
         height: 100%; 
         background: rgba(64, 64, 64, 0.5);
         z-index: 999999;
         display: none;
    }

    #infobox3 {
        margin: auto;
        position: absolute;
        left: 35%;
        top: 20%;
        height: 300px;
         width: 400px;
        background-color: white;
        border: 1px solid red;
    }

scripts.js の関連コンテンツ:

function popbox3() {
    $('#overbox3').toggle();
}

そして、私が想定しているのは、問題である annoy.js の内容です。

    function GetCookie(name) {
        var arg=name+"=";
        var alen=arg.length;
        var clen=document.cookie.length;
        var i=0;

        while (i<clen) {
            var j=i+alen;
                if (document.cookie.substring(i,j)==arg)
                    return "here";
                i=document.cookie.indexOf(" ",i)+1;
                if (i==0) 
                    break;
        }

        return null;
    }

    var visit=GetCookie("COOKIE1");

    if (visit==null){
    var expire=new Date();

    popbox3();

    expire=new Date(expire.getTime()+7776000000);
    document.cookie="COOKIE1=here; expires="+expire;
}

私の理解では、Cookie は、ユーザーがアクセスしていない場合にのみ関数 popbox3() を呼び出しているはずです。これにより、非表示の div の表示が切り替わります。しかし、今のところ、何も機能していません。ここでの説明やヘルプは大歓迎です。前もって感謝します。

4

1 に答える 1

8

あなたのクッキーコードは問題ないようです。DIV を切り替える前にドキュメントが読み込まれるまで待機するように、ドキュメントの準備ができているハンドラーで実行する必要があります。

$(function() {
    var visit=GetCookie("COOKIE1");

    if (visit==null){
        popbox3();
    }
    var expire=new Date();
    expire=new Date(expire.getTime()+7776000000);
    document.cookie="COOKIE1=here; expires="+expire;
}

また、Cookie を無条件に設定して、サイトにアクセスするたびに有効期限を遅らせるようにしました。

于 2013-09-19T21:21:20.617 に答える