【问题标题】:Cookie doesn't work in Chrome only [closed]Cookie 仅在 Chrome 中不起作用[关闭]
【发布时间】:2020-07-13 04:41:40
【问题描述】:

这是一个用于基本滑动切换的频率上限 cookie,我已经有一段时间没有使用过了。适用于 FF、IE,不适用于 chrome。上限基于日历日,而不是 24 小时时间段。

jQuery.noConflict();
jQuery(document).ready(function(){
var pageURL = location.href.toLowerCase();
var sbFirstSlide = (document.cookie.indexOf('sbb_'+pageURL) == -1); //check cookie for 'already seen today'
var sbTrigger = jQuery('#slidebartrigger');
var slideState = 0;     //0=up, 1=down
var downTM, upTM;
function slideUp(){
    if(slideState==1){
        if(downTM) clearTimeout(downTM);
        jQuery("#slidebar").slideToggle(200);
        slideState=0;
        sbTrigger.removeClass("closeSlide").one('click', slideDown);
    }
}   
function slideDown(){
    if(slideState==0){
        if(upTM) clearTimeout(upTM);
        jQuery("#slidebar").slideToggle(500);
        slideState=1;
        sbTrigger.removeClass("firstSlide");
        sbTrigger.addClass("closeSlide").one('click', slideUp);
    }
}
function setSBBCookie(){
    var oneDay = new Date();
    oneDay.setUTCDate(oneDay.getUTCDate()+1);
    oneDay.setUTCHours(0, 0, 0, 0); //set to literally day-by-day, rather than 24 hours
    document.cookie="sbb_"+pageURL+"=true;path=/;expires="+oneDay.toUTCString();
}
if(sbFirstSlide){
    slideDown();
    setSBBCookie();
    downTM=setTimeout(slideUp,3000);
}else{sbTrigger.removeClass("firstSlide").one('click', slideDown);}
});

【问题讨论】:

    标签: javascript jquery cookies


    【解决方案1】:

    您可能遇到的问题是 Google Chrome 不允许您在运行本地文件时设置 cookie。所以,你的线:

    document.cookie="sbb_"+pageURL+"=true;path=/;expires="+oneDay.toUTCString();
    

    从本地文件运行时无法在 Chrome 中运行。您将需要从某种服务器上运行您的代码或使用 JSFiddle 之类的东西。

    如果您尝试在 JSFiddle http://jsfiddle.net/X9yze/ 等网络服务器上运行您的代码,您将看到它正在 Google Chrome 中设置 cookie。

    【讨论】:

    • 您必须将“希望这对您有所帮助”作为代码的原因是......因为您应该提供代码!不接受仅链接的答案。
    • @AshleyMedway 您对要发布的代码有什么建议吗?我只是复制了他的代码并将其粘贴到 jsfiddle 中。
    • 如果它是相同的代码,那么不需要在你的答案中提供一个小提琴,这使得这个答案成为评论。没有答案。
    • @AshleyMedway 小提琴的重点是通过提供基于 Web 的代码版本来证明正在设置 cookie,以便他们在 Web 服务器上运行时可以看到正在设置 cookie .这是一个答案,因为它显示了他们的问题是什么以及如何解决它。这不是重点吗? 〜另外......这不是一个“仅限链接”的答案。答案是“谷歌浏览器不允许您从本地文件设置 cookie。”
    • @AshleyMedway 我在原始帖子中没有看到任何问题。但从编辑看来,约瑟夫是对的。当您使用本地文件 (file://) 时,谷歌浏览器不会设置 cookie。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-08
    • 2018-11-03
    • 2018-09-16
    • 2012-06-12
    • 2013-03-20
    • 1970-01-01
    • 2011-12-17
    相关资源
    最近更新 更多