JQuery Cookie为IE& amp;上的特定网址问题设置了cookie。边缘

时间:2018-01-14 14:53:49

标签: javascript jquery cookies jquery-cookie

我正在使用JQuery cookie插件&如果用户按下按钮,我正在尝试设置cookie。同样非常重要的是,cookie 仅对当前页面有效,因此不适用于整个文档。

这是我到目前为止所尝试的:

if ($.cookie('pressed')) { 
    alert("Button is already pressed.")
} else {
    $.cookie('pressed', 'somevalue', { expires: 1, path: window.location.pathname });
    executeSomeFunction();
}  

上面的代码似乎适用于Chrome,但在边缘和IE11上失败。事实上,它甚至没有在所提到的浏览器中保存cookie。

我正在使用jquery cookie插件(链接在这里:https://plugins.jquery.com/cookie/

1 个答案:

答案 0 :(得分:0)

没关系。我找到了答案。显然IE(和Edge)中存在一个错误

  

关于Internet Explorer的注意事项:

     

由于底层的WinINET InternetGetCookie中存在一个模糊的错误   如果实现,IE的document.cookie将不会返回cookie   使用包含文件名的路径属性进行设置。

     

(来自Internet Explorer Cookie Internals(FAQ))

     

这意味着无法使用path:window.location.pathname设置路径   如果这样的路径名包含如下文件名:/ check.html(或at   至少,这样的cookie无法正确读取。)

我通过简单地根据当前页面网址命名cookie来修复它。这样每个页面都有一个唯一的cookie名称。

我是这样做的:

if (Cookies.get(window.location.pathname)) { 
    alert("Sie haben dieses Rezept bereits bewertet. Wenn Sie erneut bewerten wollen, können Sie dies nach 24 Stunden tun.")
} else {
    Cookies.set(window.location.pathname, 'value', { expires: 1, path: '' });
    executeRating(star, voteCount, voteAverage, nodeId);
}