1. Vorwort
Zuvor wurden Cookies in Form von Dokument verwendet. Obwohl die Kompatibilität gut ist, ist sie problematisch. Ich bin eine Person, die lieber Räder herstellt, also verkapsle ich ein Werkzeug für Cookies. Ich schreibe für eine lange Zeit gerne Code, aber nicht sehr gerne Texte zusammenfassen, noch schreibe ich gerne einige fragmentarische Dinge. Es scheint, dass ich es ändern muss.
2. Ideen
(1) wie man zusammenfasst und was zu verkörpern ist
Socapsulate: Es soll native js verwendet werden, um es in ein Werkzeug zu verkapulieren, damit es überall verwendet werden kann. Die Kapselung gegen document.cookie ist der beste Weg, dies zu tun, und alle Vorgänge basieren auf Dokument.cookie.
Was ist eingekapselt: eingekapselt, das als Objekt existiert, und kann mit der Getter & Setter -Methode implementiert werden.
(2) Welche Kapselungsmethoden
get (), set (name, value, opts), entfernen (name), clear (), getcookies () usw. Ich persönlich denke, dass die Einkapselung so viele Methoden ausreicht, um Cookies zu verwenden.
3. Aktion
(1) Kekse verstehen. Die Essenz der Cookies sind HTTP -Cookies. Document.cookie Wenn das vom Client dargelegte Objekt ein Dokument ist. Für weitere Informationen können Sie den folgenden Code und einen Kommentar lesen
(2) Der obige Code: Diese Codes sollten sehr intuitiv sein und können zusammen mit dem Projektcode komprimiert werden. Ich denke, die Kommentare zu Beginn der folgenden Punkte sind die wichtigsten Punkte.
Die Codekopie lautet wie folgt:
/*
* HTTP Cookies: Sitzungsinformationen speichern
* Name und Wert müssen bei der Übertragung eine Regel codiert werden
* Cookie ist an den angegebenen Domänennamen gebunden. Cookies können nicht ohne diese Domain geteilt werden, aber sie können Kekse an Umspannwerken auf der Hauptstelle teilen.
* Cookies haben einige Einschränkungen: Zum Beispiel IE6 & IE6-begrenzt auf 20; IE7 50; Opera 30 ... also werden Cookies normalerweise gemäß den Anforderungen von [Must] festgelegt.
* Der Name des Keks ist fehlerfrei; Es wird auch empfohlen, die Cookie -URL zu codieren. Der Weg ist ein guter Weg, um Kekse in verschiedenen Situationen zu unterscheiden. Der Cookie mit der Sicherheitsflagge
* Senden Sie an den Server im SSL -Fall, http jedoch nicht. Es wird empfohlen, Ablauf, Domäne und Pfad für Cookies festzulegen. Jeder Cookie ist weniger als 4 KB.
* *//
// Verwenden Sie zur Kapselung von Cookies Getter- und Setter -Methoden, um Getter- und Setter -Methoden anzuwenden
(Funktion (global) {
// Holen Sie sich das Cookie -Objekt, das als Objekt ausgedrückt wird
Funktion getcookiesObj () {
var cookies = {};
if (document.cookie) {
var objs = document.cookie.split (';');
für (var i in objs) {
var index = objs [i] .indexof ('='),
name = objs [i] .substr (0, Index),
value = objs [i] .substr (index + 1, objs [i] .Length);
Cookies [Name] = Wert;
}
}
Kekse zurückgeben;
}
// Cookies einstellen
Funktionset (Name, Wert, Opts) {
// maximal, Pfad, Domäne, sicher, sicher
if (name && value) {
var cookie = ccodeuricomponent (name) + '=' + codericomponent (Wert);
// Optionale Parameter
if (opts) {
if (optts.maxage) {
Cookie += '; max-age = ' + optts.maxage;
}
if (opts.path) {
Cookie += '; path = ' + optts.path;
}
if (optts.domain) {
Cookie += '; Domain = ' + opts.domain;
}
if (optts.secure) {
Cookie += '; sicher';
}
}
document.cookie = cookie;
Kekse zurückgeben;
}anders{
zurückkehren '';
}
}
// Kekse holen
Funktion get (Name) {
return decodeuricomponent (getcookiesObj () [Name]) || Null;
}
// einen Keks löschen
Funktion entfernen (Name) {
if (getcookiesObj () [name]) {
document.cookie = name + '=; max-altern = 0 ';
}
}
// Alle Kekse löschen
Funktion clear () {
var cookies = getcookiesObj ();
für (var Schlüssel in Cookies) {
document.cookie = key + '=; max-altern = 0 ';
}
}
// Holen Sie sich alle Kekse
Funktion getcookies (name) {
return getcookiesObj ();
}
// Konflikt lösen
Funktion noconflict (name) {
if (name && typeof name === 'String') {
if (name && window ['cookie']) {
Fenster [Name] = Fenster ['Cookie'];
Fenster löschen ['Cookie'];
Rückgabefenster [Name];
}
}anders{
Rückkehrfenster ['Cookie'];
Fenster löschen ['Cookie'];
}
}
Global ['Cookie'] = {
"Getcookies": Getcookies,
'set': set,
"Get": Holen Sie sich,,
'entfernen': entfernen,
'klar': klar,
'noconflict': noconflict
};
})(Fenster);
(3) Beispiel
Die Codekopie lautet wie folgt:
<! DocType html>
<html>
<kopf>
<meta charset = "utf-8">
<title> Cookie Beispiel </title>
</head>
<body>
<script type = "text/javaScript" src = "cookie.js">/script>
<script type = "text/javaScript">
console.log ('----------------------------------------------------);
console.log (Cookie);
console.log ('------------------------------------------------------------------------------------------------------------------------------------------------------------------
console.log (Cookie.getCookies ());
console.log ('----------------------------------------------------------);
console.log (Cookie.set ('name', 'wlh'));
console.log ('-------------------------------------------------------------------);
console.log (Cookie.set ('Name', 'WLH123');
console.log ('--------------------------------------------------------------------);
console.log (Cookie.set ('Alter', 20));
console.log ('------------------------------------------------------);
console.log (Cookie.get ('Name'));
console.log ('------------------------------------------------------------);
console.log (Cookie.getCookies ());
console.log ('-------------------------------------------------------------------);
console.log (Cookie.remove ('Alter'));
console.log ('------------------------------------------------------------);
console.log (Cookie.getCookies ());
console.log ('----------------------------------------------------------------);
console.log (Cookie.Clear ());
console.log ('------------------------------------------------------------);
console.log (Cookie.getCookies ());
console.log ('----------------------------------------------------------------);
var $ cookie = cookie.noconflict (true /*ein neuer Name von Cookie* /);
console.log ($ cookie);
console.log('-----------------------------------------------------------------);
console.log ($ cookie.getCookies ());
</script>
</body>
</html>
(4) Codeadresse: https://github.com/vczero/cookie