Cookie仅适用于Firefox

时间:2015-04-21 10:54:21

标签: javascript html cookies

我一直致力于一个项目,在项目中,我决定制作一个移动版本的网站。

我想要做的是暂时设置一个cookie(20分钟)“禁用”页面加载时将会查看的欢迎消息。

Cookie的问题在于它无法在Chrome或Opera上运行,但它适用于Firefox。

我不知道问题是什么。有人可以指点我正确的方向吗?我对网络开发有点新意。

以下是代码:

欢迎功能:

function welcome1 () {
        $('.message').each(function(i) {
            $(this).delay((i++) * 2000).fadeTo(700, 1);
            $(this).delay(1400).fadeOut(300);
        }),
        setTimeout(function() {
            $('.solar-body').each(function(i) {
                $(this).delay((i++) * 200).fadeTo(400, 1); 
            })
        }, 5000);
    }

曲奇:

    // c_name = cookie name
    // c_value = cookie value
    // ex_min = expiration in minutes
    function setCookie(c_name, c_value, ex_min) {
        var d = new Date();
        d.setTime(d.getTime() + (ex_min * 60 * 1000));
        var expires = "expires="+d.toUTCString();
        document.cookie = c_name + "=" + c_value + "; " + expires;
    }

OnLoad功能:

function welcomeMessage() {
        var lastVisitedCookieName = 'last-visited';
        if (!document.cookie.contains(lastVisitedCookieName)) {
            welcome1();
            setCookie(lastVisitedCookieName, "1", 20);
        }
        else if (document.cookie.contains(lastVisitedCookieName)) {
            setTimeout(function() {
                $('.solar-body').each(function(i) {
                $(this).delay((i++) * 200).fadeTo(400, 1); 
                })
            }, 500);
        }
    }

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

地址栏中的网址是什么样的?如果它以file://开头,那就是问题所在。您需要运行本地服务器(因此URL变为例如http://localhost:8000/)才能正确测试您的网站。


更新:问题可能是您正在使用String.prototype.contains。它已在规范中重命名为String.prototype.includes,只有Firefox仍支持旧表单。使用a polyfill,或使用.indexOf()> -1代替(这种方式适用于所有浏览器,包括较旧的浏览器)。

P.S。既然你正在使用jQuery,并且为了更容易使用cookie,为什么不使用the jQuery cookie plugin