2013-09-19 2 views
4

Я пытаюсь отобразить div в первый раз, когда пользователь посещает мой сайт. Я уверен, что я делаю это, используя куки-файлы, с которыми у меня ограниченный опыт, и я с трудом понимаю. Большинство обучающих программ, которые я нашел в Интернете, говорят только о том, что у них есть файлы cookie, чтобы пользователь вводил что-то вроде имени, и помните его позже, что совсем не то, что я хочу. Я просто хочу, чтобы файл 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; 
} 

С моей точки зрения, куки-файл должен вызывать функцию popbox3(), только если пользователь не посетил, что бы переключить отображение скрытого div. Но на данный момент ничего не работает. Любые разъяснения или помощь здесь будут высоко оценены. Заранее спасибо.

+0

Итак, что произойдет, если я посетил и удалю свои куки? –

+1

Альтернативой было бы использовать [store.js] (https://github.com/marcuswestin/store.js/) для отслеживания этого. Более чистый api/less накладные расходы, чем файлы cookie. –

+0

@RUJordan Я должен был уточнить, что я не против этого. Если кто-то очистит файлы cookie, у меня нет проблем с отображением div снова. – user1925805

ответ

6

Ваш код cookie выглядит отлично. Вы должны запустить его в документ, готовый обработчик, так что его ждет, пока документ не будет загружен до переключая 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; 
} 

Я также сделал настройки куки безусловную, так что каждый визит на сайт будет отодвиньте время истечения.

+0

Блестяще, спасибо. Чтобы уточнить, этот код был бы заменой только для всех под возвратом null;} в моем первоначальном annoy.js, правильно? – user1925805

+0

Да. Хотя вы можете поместить функции внутри него, если хотите, чтобы они не загрязняли глобальное пространство имен. – Barmar

+0

Должен? Я помогу тебе однажды, теперь я твой раб на всю жизнь? – Barmar

Смежные вопросы