630 votes

Cookie et le devenir de cookie avec JavaScript

Je suis en train de définir un cookie selon quel fichier css, j’ai choisi dans mon code Html. J’ai un formulaire avec une liste d’options et les fichiers css différents comme valeurs. Quand je choisis un fichier, elle doit être enregistrée dans un cookie pour environ une semaine. La prochaine fois que vous ouvrez votre fichier html, il devrait être le fichier précédent, que vous avez choisi.

Code JavaScript :

Code HTML :

978voto

Mandeep Janjua Points 896

J’ai trouver suite code beaucoup plus simple qu’autre chose

Maintenant, appel de fonctions

Source - http://www.quirksmode.org/js/cookies.html

Ils ont mis à jour la page aujourd'hui donc tout dans la page devrait être plus récente dès maintenant.

402voto

B T Points 4868

Ces sont beaucoup *beaucoup* de meilleures références que w3schools (la plus terrible de la référence web jamais fait):

Des exemples tirés de ces références:

// sets the cookie cookie1
document.cookie =
 'cookie1=test; expires=Fri, 3 Aug 2001 20:47:11 UTC; path=/'

// sets the cookie cookie2 (cookie1 is *not* overwritten)
document.cookie =
 'cookie2=test; expires=Fri, 3 Aug 2001 20:47:11 UTC; path=/'

// remove cookie2
document.cookie = 'cookie2=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/'

Le mozilla de référence a même un beau témoin de la bibliothèque, vous pouvez utiliser.

34voto

Munish Poonia Points 156

L’URL contient tout au sujet de définir et d’obtenir des valeurs de cookie via JS. http://www.w3schools.com/js/js_cookies.asp

Il suffit d’utiliser les méthodes setCookie et getCookie mentionnés là.

Ainsi, le code ressemblera à quelque chose comme :

31voto

Dan Points 7078

Je suis sûr que cette question devrait avoir plus de réponse générale avec certains de code réutilisable qui fonctionne avec des cookies comme des paires clé-valeur.

Cet extrait est tiré de MDN et est probablement dignes de confiance. C'est de l'UTF-safe objet pour le travail avec les cookies:

var docCookies = {
  getItem: function (sKey) {
    return decodeURIComponent(document.cookie.replace(new RegExp("(?:(?:^|.*;)\\s*" + encodeURIComponent(sKey).replace(/[\-\.\+\*]/g, "\\$&") + "\\s*\\=\\s*([^;]*).*$)|^.*$"), "$1")) || null;
  },
  setItem: function (sKey, sValue, vEnd, sPath, sDomain, bSecure) {
    if (!sKey || /^(?:expires|max\-age|path|domain|secure)$/i.test(sKey)) { return false; }
    var sExpires = "";
    if (vEnd) {
      switch (vEnd.constructor) {
        case Number:
          sExpires = vEnd === Infinity ? "; expires=Fri, 31 Dec 9999 23:59:59 GMT" : "; max-age=" + vEnd;
          break;
        case String:
          sExpires = "; expires=" + vEnd;
          break;
        case Date:
          sExpires = "; expires=" + vEnd.toUTCString();
          break;
      }
    }
    document.cookie = encodeURIComponent(sKey) + "=" + encodeURIComponent(sValue) + sExpires + (sDomain ? "; domain=" + sDomain : "") + (sPath ? "; path=" + sPath : "") + (bSecure ? "; secure" : "");
    return true;
  },
  removeItem: function (sKey, sPath, sDomain) {
    if (!sKey || !this.hasItem(sKey)) { return false; }
    document.cookie = encodeURIComponent(sKey) + "=; expires=Thu, 01 Jan 1970 00:00:00 GMT" + ( sDomain ? "; domain=" + sDomain : "") + ( sPath ? "; path=" + sPath : "");
    return true;
  },
  hasItem: function (sKey) {
    return (new RegExp("(?:^|;\\s*)" + encodeURIComponent(sKey).replace(/[\-\.\+\*]/g, "\\$&") + "\\s*\\=")).test(document.cookie);
  },
  keys: /* optional method: you can safely remove it! */ function () {
    var aKeys = document.cookie.replace(/((?:^|\s*;)[^\=]+)(?=;|$)|^\s*|\s*(?:\=[^;]*)?(?:\1|$)/g, "").split(/\s*(?:\=[^;]*)?;\s*/);
    for (var nIdx = 0; nIdx < aKeys.length; nIdx++) { aKeys[nIdx] = decodeURIComponent(aKeys[nIdx]); }
    return aKeys;
  }
};

Mozilla a quelques tests pour le prouver, ce qui fonctionne dans tous les cas.

Il y a un autre extrait ici:

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X