检查用户是否已在浏览器会话中访问过站点

时间:2015-02-16 01:45:48

标签: javascript session cookies

因此,当您访问我的网站时,我会播放这个启动画面动画。但是,我只希望动画在您第一次访问时播放(当然在会话中)。我尝试在if中检查一个名为“Session”的cookie,如果它存在,则删除包含动画的div。如果没有这样的cookie,请创建它。

代码:

function session() {
    if (document.cookie.indexOf("visited") >= 0) {
        $('.splash').remove(this);
    } else {
        document.cookie = "visited";
    }
}

之前我从未使用过Cookie,所以我认为我可能会犯一些错误

2 个答案:

答案 0 :(得分:2)

代码中处理Cookie的部分应该有效。

您的问题存在于此行:

$('.splash').remove(this);

删除this,因为没有必要。

该行应如下所示:

$('.splash').remove();

希望有所帮助。

答案 1 :(得分:2)

Chrome有一项安全限制,除非该网页是从网络服务器运行,否则您无法访问Cookie。 Firefox将在没有带cookie的Web服务器的情况下工作。为了快速测试本地文件,我建议使用http-server

我使用以下cookie功能轻松设置cookie。原始代码来自w3cschools网站,对IE8 cookie问题进行了一些修改。

setCookie = function (c_name,value,exdays) {
    var exdate=new Date();
    exdate.setDate(exdate.getDate() + exdays);
    var expires = exdate.toUTCString();
    var isIE8 = (document.documentMode !== undefined);
    if (exdays == 0) {
        expires = (isIE8 == true) ? "" : "0";
    }
    var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+expires);
    document.cookie=c_name + "=" + c_value;
}

getCookie = function(cname) {
    var name = cname + "=";
    var ca = document.cookie.split(';');
    for(var i=0; i<ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1);
        if (c.indexOf(name) != -1) return c.substring(name.length,c.length);
    }
    return "";
}

deleteCookie = function(name) {
  document.cookie = name + '=; expires=Thu, 01 Jan 1970 00:00:01 GMT;';
}

要检查您可以执行的Cookie:

if (getCookie('visited')) {
    $('.splash').remove();
    deleteCookie('visited');
} else {
    setCookie('visited','true',999); //999 days expiration
}