/ / JQuery Cookie setzt Cookie für ein bestimmtes URL-Problem in IE & Edge - Javascript, JQuery, Cookies, JQuery-Cookie

JQuery Cookie gesetzt Cookie für spezifische URL-Problem auf IE & Edge - Javascript, jquery, Cookies, jquery-Cookie

Ich verwende das JQuery-Cookie-Plugin und versuche, ein Cookie zu setzen, wenn ein Benutzer eine Taste drückt. Es ist auch sehr wichtig, dass der Cookie ist Nur gültig für die aktuelle Seite und daher nicht für das gesamte Dokument.

Das habe ich bisher versucht:

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

Der obige Code scheint für Chrome in Ordnung zu sein, schlägt jedoch bei Edge und IE11 fehl. Tatsächlich wird das Cookie in den genannten Browsern nicht einmal gespeichert.

Ich benutze das JQuery Cookie Plugin (Link hier: https://plugins.jquery.com/cookie/)

Antworten:

0 für die Antwort № 1

Keine Ursache. Ich habe die Antwort gefunden. Anscheinend gibt es einen Fehler in IE (und Edge)

Hinweis zum Internet Explorer:

Aufgrund eines obskuren Fehlers im zugrunde liegenden WinINET InternetGetCookie Implementierung gibt das document.cookie des IE kein Cookie zurück, wenn dies der Fall ist wurde mit einem Pfadattribut festgelegt, das einen Dateinamen enthält.

(Von Internet Explorer Cookie Internals (FAQ))

Dies bedeutet, dass man keinen Pfad mit path: window.location.pathname festlegen kann Falls ein solcher Pfadname einen Dateinamen wie den folgenden enthält: /check.html (oder at Zumindest kann ein solches Cookie nicht korrekt gelesen werden.

Ich habe es behoben, indem ich das Cookie einfach entsprechend der aktuellen Seiten-URL benannt habe. Auf diese Weise gibt es für jede Seite einen eindeutigen Cookie-Namen.

Ich habe es so gemacht:

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