Heim  >  Artikel  >  Web-Frontend  >  Verwendung von document.cookie in JavaScript

Verwendung von document.cookie in JavaScript

高洛峰
高洛峰Original
2016-11-26 13:27:161292Durchsuche

Wir wissen bereits, dass das Dokumentobjekt ein Cookie-Attribut enthält. Aber was sind Cookies? „Einige Websites speichern Informationen auf Ihrer Festplatte in kleinen Textdateien, sogenannten Cookies.“ – MSIE-Hilfe. Im Allgemeinen werden Cookies durch CGI oder ähnliche Dateien, Programme usw. erstellt, die weiter fortgeschritten sind als HTML, aber Javascript bietet auch sehr umfassende Zugriffsrechte auf Cookies.

Zuerst müssen wir uns die Grundkenntnisse von Cookies aneignen.

Jedes Cookie sieht so aus: =

Die Einschränkungen ähneln den Namensbeschränkungen von Javascript, mit Ausnahme des „ „Javascript Schlüsselwörter können nicht verwendet werden“ und „Nur Zeichen, die in der URL-Codierung verwendet werden können“ werden hinzugefügt. Letzteres ist schwieriger zu verstehen, aber solange Sie nur Buchstaben und Zahlen für Namen verwenden, ist alles in Ordnung. Die Anforderung für lautet außerdem „nur Zeichen, die in der URL-Kodierung verwendet werden können“.

Jedes Cookie hat ein Ablaufdatum. Sobald die Computeruhr das Ablaufdatum überschreitet, wird das Cookie gelöscht. Wir können ein Cookie nicht direkt löschen, aber wir können es indirekt löschen, indem wir das Ablaufdatum vor dem aktuellen Zeitpunkt festlegen.

Jede Webseite oder jede Site verfügt über eigene Cookies. Auf diese Cookies können nur Webseiten unter dieser Site, Webseiten von anderen Sites oder nicht autorisierte Bereiche derselben Site zugreifen. Jede „Gruppe“ von Cookies hat eine bestimmte Gesamtgröße (ungefähr 2 KB pro „Gruppe“). Sobald die maximale Gesamtgröße überschritten wird, werden die frühesten abgelaufenen Cookies zuerst gelöscht, damit sich neue Cookies „einleben“ können.

Jetzt lernen wir, das Attribut „documents.cookie“ zu verwenden.

Wenn Sie das Attribut „documents.cookie“ direkt verwenden oder eine Methode verwenden, z. B. das Zuweisen eines Werts zu einer Variablen, um den Wert von „documents.cookie“ zu erhalten, können wir wissen, wie viele Cookies aktuell vorhanden sind Dokument Jeder Der Name jedes Cookies und sein Wert. Wenn Sie beispielsweise „document.write(documents.cookie)“ zu einem Dokument hinzufügen, wird Folgendes angezeigt:

name=kevin; email=kevin@kevin.com; lastvisited=index.html

Das bedeutet, dass das Dokument drei Cookies enthält: Name, E-Mail und zuletzt besucht, deren Werte jeweils Kevin, Kevin@Kevin.com und Index.html sind. Wie Sie sehen können, sind die beiden Cookies durch Semikolons und Leerzeichen getrennt, sodass wir die Methode cookieString.split('; ') verwenden können, um ein Array jedes Cookies abzurufen (zuerst var cookieString = document.cookie verwenden).

Die Möglichkeit, ein Cookie zu setzen, besteht darin, „documents.cookie“ einen Wert zuzuweisen. Im Gegensatz zur Zuweisung in anderen Fällen werden durch die Zuweisung eines Werts an „documents.cookie“ die ursprünglichen Cookies nicht gelöscht, sondern lediglich Cookies hinzugefügt oder die ursprünglichen Cookies geändert. Das Format der Aufgabe:

document.cookie = 'cookieName=' + escape('cookievalue') + ';expires=' + expirationDateObj.toGMTString();

Fühlen Sie sich schwindelig? ? Wolltuch? cookieName stellt den Namen des Cookies dar, cookievalue stellt den Wert des Cookies dar und expirationDateObj stellt den Namen des Datumsobjekts dar, das das Ablaufdatum speichert. Wenn das Ablaufdatum nicht angegeben werden muss, ist die zweite Zeile nicht erforderlich. Wenn das Ablaufdatum nicht angegeben ist, geht der Browser nach dem Schließen des Browsers (d. h. dem Schließen aller Fenster) standardmäßig auf das Ablaufdatum zurück.

Erstens die Escape()-Methode: Warum muss sie verwendet werden? Denn die Anforderung für den Cookie-Wert lautet: „Es dürfen nur Zeichen verwendet werden, die bei der URL-Codierung verwendet werden können.“ Wir wissen, dass die Methode „escape()“ die Zeichenfolge gemäß der URL-Kodierungsmethode codiert. Dann müssen wir nur eine Methode „escape()“ verwenden, um den an das Cookie ausgegebenen Wert zu verarbeiten, und „unescape()“ verwenden Verarbeiten Sie den vom Cookie ausgegebenen Wert. Und die häufigste Verwendung dieser beiden Methoden ist der Umgang mit Cookies. Tatsächlich ist das Setzen eines Cookies so einfach wie „documents.cookie = ‚cookieName=cookievalue‘“, aber um Zeichen zu vermeiden, die in der URL nicht vorkommen dürfen, ist es besser, escape() zu verwenden.

Dann das Semikolon vor „expires“: Beachten Sie es einfach. Es ist das Semikolon und sonst nichts.
Letzte togmtstring()-Methode: Das Festlegen der Aktualität von Cookies im GMT-Format und die Zeit anderer Formate funktioniert nicht.

Jetzt lasst uns einen echten Kampf führen. Setzen Sie ein Cookie mit „name=rose“, das nach 3 Monaten abläuft.

var expires = new Date();

expires.setTime(expires.getTime() + 3 * 30 * 24 * 60 * 60 * 1000);
/* drei Monate x eins A Als Monat gelten 30 Tage x 24 Stunden am Tag
x 60 Minuten pro Stunde x 60 Sekunden pro Minute x 1000 Millisekunden pro Sekunde*/
documents.cookie = 'name=rose;expires=' + läuft ab. toGMTString() ;

Warum wird die Methode escape() nicht verwendet? Dies liegt daran, dass wir wissen, dass Rose eine gültige URL-codierte Zeichenfolge ist, d. h. „rose“ == escape(‘rose‘). Im Allgemeinen gilt: Wenn Sie beim Setzen des Cookies nicht escape() verwenden, müssen Sie beim Abrufen des Cookies auch unescape() nicht verwenden.

Machen wir es noch einmal: Schreiben Sie eine Funktion, um den Wert eines bestimmten Cookies zu ermitteln.

function getCookie(cookieName) {
var cookieString = document.cookie;
var start = cookieString.indexOf(cookieName + '=');
//Der Grund für das Hinzufügen des Gleichen sign Es soll vermieden werden, dass
// in einigen Cookie-Werten dieselbe Zeichenfolge wie cookieName enthält.
if (start == -1) // Nicht gefunden
return null;
start += cookieName.length + 1;
var end = cookieString.indexOf(';', start) ;
if (end == -1) return unescape(cookieString.substring(start));
return unescape(cookieString.substring(start, end));
}

This The Die Funktion verwendet einige Methoden des String-Objekts. Wenn Sie sich nicht daran erinnern (haben Sie so wenig Speicher?), schlagen Sie es bitte schnell nach. Alle if-Anweisungen in dieser Funktion enthalten kein else. Dies liegt daran, dass das Programm return-Anweisungen ausführt, wenn in der Funktion eine return-Anweisung auftritt, sodass es kein Problem gibt, wenn nicht else hinzugefügt wird. Diese Funktion gibt den Wert des Cookies zurück, wenn sie das Cookie findet, andernfalls gibt sie „null“ zurück.

Jetzt müssen wir das soeben gesetzte name=rose-Cookie löschen.

Var Expires = neues Datum(); ;

Angehängt ist eine von einem Ausländer geschriebene js-Funktion zum Betreiben von Cookies

///Cookie setzen


function setCookie(NameOfCookie, value , Ablauftage )

{

//@Parameter: Drei Variablen werden zum Setzen neuer Cookies verwendet:
//Cookie-Name, gespeicherter Cookie-Wert,
// und Cookie-Ablauf Zeit.
//Diese Zeilen wandeln Tage in gesetzliche Daten um

var ExpireDate = new Date ();

ExpireDate.setTime(ExpireDate.getTime() + (expiredays * 24 * 3600 * 1000));

// Die folgende Zeile wird zum Speichern von Cookies verwendet. Weisen Sie einfach „document.cookie“ einen Wert zu.
// Achten Sie auf das Datum. Es wird in GMT-Zeit umgewandelt über die Funktion toGMTstring().

document.cookie = NameOfCookie + "=" + escape(value) +

((expiredays == null) ? "" : "; Expires=" + ExpireDate.toGMTString()) ;

}

///Cookie-Wert abrufen
function getCookie(NameOfCookie)
{

// Zuerst prüfen wir, ob das Cookie existiert.
// Wenn es nicht existiert, ist die Länge von document.cookie 0
if (document.cookie.length > 0)
{

// Dann prüfen wir, ob der Cookie-Name existiert in document.cookie
// Da mehr als ein Cookie-Wert gespeichert wird, gibt es keine Garantie dafür, dass das Cookie mit dem gewünschten Namen vorhanden ist, auch wenn die Länge von document.cookie nicht 0 ist
//Also wir brauchen diesen Schritt, um zu sehen, ob es ein Cookie gibt, das wir wollen
//Wenn der Variablenwert von begin -1 ist, bedeutet das, dass es nicht existiert
begin = document.cookie.indexOf(NameOfCookie+"= ");
if (begin != - 1)
{
// Zeigt die Existenz unseres Cookies an.
begin += NameOfCookie.length+1;//Die Anfangsposition des Cookies value
end = document.cookie.indexOf(";" , begin);//Endposition
if (end == -1) end = document.cookie.length;//No; Endposition der Zeichenfolge
return unescape(document.cookie.substring( begin, end)); und null zurückgeben
}


///Cookie löschen
Funktion delCookie (NameOfCookie)
{
// Diese Funktion prüft, ob das Cookie gesetzt ist eingestellt, die Ablaufzeit wird an die vergangene Zeit angepasst;
//Der Rest bleibt der Operation überlassen. Das System löscht Cookies zum richtigen Zeitpunkt



if (getCookie(NameOfCookie )) {www.2cto.com
document.cookie = NameOfCookie + "=" +
"; läuft ab =Do, 01.01.70 00:00:01 GMT";
}
}



Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn