Wie setze und entferne ich ein Cookie mit jQuery, zum Beispiel ein Cookie namens test
und setzen Sie den Wert auf 1
?
Antworten
Zu viele Anzeigen?Der folgende Code entfernt alle Cookies innerhalb der aktuellen Domain und aller nachfolgenden Subdomains ( www.some.sub.domain.com
, .some.sub.domain.com
, .sub.domain.com
und so weiter.).
Eine einzeilige Vanilla-JS-Version (keine Notwendigkeit für jQuery):
document.cookie.replace(/(?<=^|;).+?(?=\=|;|$)/g, name => location.hostname.split('.').reverse().reduce(domain => (domain=domain.replace(/^\.?[^.]+/, ''),document.cookie=`${name}=;max-age=0;path=/;domain=${domain}`,domain), location.hostname));
Dies ist eine lesbare Version dieser einzigen Zeile:
document.cookie.replace(
/(?<=^|;).+?(?=\=|;|$)/g,
name => location.hostname
.split(/\.(?=[^\.]+\.)/)
.reduceRight((acc, val, i, arr) => i ? arr[i]='.'+val+acc : (arr[i]='', arr), '')
.map(domain => document.cookie=`${name}=;max-age=0;path=/;domain=${domain}`)
);
Ich weiß, es gibt schon viele Antworten, aber hier ist eine, die es in sich hat set
, get
y delete
alles schön vanillig und in einen globalen Bezug gesetzt:
window.cookieMonster = window.cookieMonster ||
{
// https://stackoverflow.com/a/25490531/1028230
get: function (cookieName) {
var b = document.cookie.match('(^|;)\\s*' + cookieName + '\\s*=\\s*([^;]+)');
return b ? b.pop() : '';
},
delete: function (name) {
document.cookie = '{0}=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;'
.replace('{0}', name);
},
set: function (name, value) {
document.cookie =
'{0}={1};expires=Fri, 31 Dec 9999 23:59:59 GMT;path=/;SameSite=Lax'
.replace('{0}', name)
.replace('{1}', value);
}
};
Beachten Sie, dass die Cookie-Regex von diese Antwort auf eine Frage in einem anderen Schloss .
Testen wir es:
cookieMonster.set('chocolate', 'yes please');
cookieMonster.set('sugar', 'that too');
console.log(cookieMonster.get('chocolate'));
console.log(document.cookie);
cookieMonster.delete('chocolate');
console.log(cookieMonster.get('chocolate'));
console.log(document.cookie);
Wenn Sie vor dem Versuch keine Kekse gegessen haben, sollten Sie...
yes please
chocolate=yes please; sugar=that too
sugar=that too
Beachten Sie, dass die Kekse aus unserer Sicht nicht ganz so lange halten wie der Wärmetod des Universums, aber im Wesentlichen so lange. Sie können ziemlich leicht herausfinden, wie Sie die Daten ändern können, wenn Sie sich die Zeichenketten hier oder in anderen Antworten ansehen.
- See previous answers
- Weitere Antworten anzeigen