Показать div при втором посещении - PullRequest
3 голосов
/ 24 мая 2011

Я хочу, чтобы div #topmessage показывал пользователям второе посещение сайта. Также, когда пользователь нажимает #close, сообщение больше не будет отображаться. Я предполагаю, что должен установить печенье и посчитать его, но не уверен как. У меня установлен следующий плагин cookie вместе с jquery http://plugins.jquery.com/files/jquery.cookie.js.txt

    <script type="text/javascript">
    jQuery(function($){ 
    $('#topmessage').delay(1000).slideDown(400);
    $("#close").click(function(){
          $("#topmessage").slideToggle(400);
        });

});
</script>
<div id="topmessage">
<a href="#" class="close" id="close">Close</a>
Hi welcome back, if you have any questions please feel free to <a href="/contact">contact me</a>.
</div>

Обновление : причина, по которой я хочу это сделать, состоит в том, чтобы отправить div пользователям, которые посетили сайт один раз и теперь возвращаются на другую дату. Я не просто хочу показывать div во второй раз, когда сайт загружается, но это также должно быть на другой дате или сеансе. Насколько я вижу, нет способа получить доступ к дате создания куки?

Ответы [ 4 ]

5 голосов
/ 24 мая 2011

Это должно работать:

<script type="text/javascript">
    $(function(){
        var value = $.cookie('the_cookie'),
            date = null;
        if (/^\d+$/.test(value || "")) {
             date = new Date();
             date.setTime(value);
        } else if ((value || "") == "") {
             $.cookie('the_cookie', new Date().getTime());
        }

        if (null != date /* && date meets your requirements */){
            $('#topmessage').delay(1000).slideDown(400);
            $("#close").click(function(){
                $("#topmessage").slideToggle(400);
            });
        }
    });
</script>

Если вы хотите обновлять дату в файле cookie при каждом посещении:

        if (/^\d+$/.test(value || "")) {
             date = new Date();
             date.setTime(value);
        }
        $.cookie('the_cookie', new Date().getTime());

Рабочая демонстрация по адресу: http://jsfiddle.net/roberkules/NL9jd/

UPDATE

добавлена ​​дата истечения срока действия и путь к cookie
добавлен второй cookie только для сессии

1 голос
/ 24 мая 2011

Возможно (не использовал Jquery cookie, но просматривал документ ...) сделать ...

jQuery(function($){ 
    if($.cookie("showMessage") == "true") {
    $('#topmessage').delay(1000).slideDown(400);
$.cookie("showMessage","never");
}
else if($.cookie("showMessage") != "never"){
$.cookie("showMessage","true");
}
    $("#close").click(function(){
          $("#topmessage").slideToggle(400);
$.cookie("showMessage","never");
        });
1 голос
/ 24 мая 2011

Я думаю, что-то подобное должно храниться в бэкэнде и контролироваться сервером.Проблема с файлами cookie заключается в том, что кто-то может удалить все свои файлы cookie (или войти в систему через другой браузер / компьютер).Звучит как свойство таблицы базы данных, относящейся к пользователю.

Сервер может просто установить флаг «show div», и представление может позаботиться об этом.Не уверен, какую технологию вы используете.

0 голосов
/ 24 мая 2011

Сначала вам необходимо определить, существует ли файл cookie. Если cookie существует, то вы знаете, что пользователь уже посещал один раз. Если cookie не существует, при первом посещении создайте cookie.

...