Cookie 仅在 Firefox 中有效

Cookies only working in Firefox

我一直在做一个项目,在项目中,我决定做一个手机版的网站。

我想做的是设置一个临时(20 分钟)"disables" 页面加载时将显示的欢迎消息的 cookie。

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);
    }

Cookie:

    // 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;
    }

加载函数:

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);
        }
    }

感谢任何帮助。

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


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

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