JQuery Cookie 为 IE 和 Edge 上的特定 url 问题设置 cookie
JQuery Cookie set cookie for specific url issue on IE & Edge
我正在使用 JQuery cookie 插件并且我正在尝试在用户按下按钮时设置一个 cookie。同样重要的是,cookie 仅对当前页面有效,因此对整个文档无效。
这是我到目前为止尝试过的:
if ($.cookie('pressed')) {
alert("Button is already pressed.")
} else {
$.cookie('pressed', 'somevalue', { expires: 1, path: window.location.pathname });
executeSomeFunction();
}
上面的代码似乎适用于 Chrome 但在 edge 和 IE11 上失败。事实上,它甚至不会在上述浏览器中保存 cookie。
我正在使用 jquery cookie 插件(link 此处:https://plugins.jquery.com/cookie/)
没关系。我找到了答案。显然 IE(和 Edge)中存在错误
Note regarding Internet Explorer:
Due to an obscure bug in the underlying WinINET InternetGetCookie
implementation, IE’s document.cookie will not return a cookie if it
was set with a path attribute containing a filename.
(From Internet Explorer Cookie Internals (FAQ))
This means one cannot set a path using path: window.location.pathname
in case such pathname contains a filename like so: /check.html (or at
least, such cookie cannot be read correctly).
我通过简单地根据当前页面命名 cookie 来修复它 url。这样每个页面都有一个唯一的 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);
}
我正在使用 JQuery cookie 插件并且我正在尝试在用户按下按钮时设置一个 cookie。同样重要的是,cookie 仅对当前页面有效,因此对整个文档无效。
这是我到目前为止尝试过的:
if ($.cookie('pressed')) {
alert("Button is already pressed.")
} else {
$.cookie('pressed', 'somevalue', { expires: 1, path: window.location.pathname });
executeSomeFunction();
}
上面的代码似乎适用于 Chrome 但在 edge 和 IE11 上失败。事实上,它甚至不会在上述浏览器中保存 cookie。
我正在使用 jquery cookie 插件(link 此处:https://plugins.jquery.com/cookie/)
没关系。我找到了答案。显然 IE(和 Edge)中存在错误
Note regarding Internet Explorer:
Due to an obscure bug in the underlying WinINET InternetGetCookie implementation, IE’s document.cookie will not return a cookie if it was set with a path attribute containing a filename.
(From Internet Explorer Cookie Internals (FAQ))
This means one cannot set a path using path: window.location.pathname in case such pathname contains a filename like so: /check.html (or at least, such cookie cannot be read correctly).
我通过简单地根据当前页面命名 cookie 来修复它 url。这样每个页面都有一个唯一的 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);
}