| Auteur | Pages : [>] |
|---|---|
| Changaco | |
| 951 Posts |
Bonjour. J'ai fait une recherche sur le sujet des fonctions utiles et j'ai remarqué qu'il n'y a rien sur les cookies et comme je n'ai trouvé dans aucun sujet des fonctions pour gérer les cookies je me demandais si quelqu'un en a à nous proposer pour que l'on puisse mettre les meilleurs dans le topic des fonctions utiles. Personnellement j'utilise celles que j'ai trouvé sur quirksmode : fonctions pour manipuler les cookies en javascript. |
| QuentinC | |
Étudiant qui bosse ... ou pas 4885 Posts |
Personnellement, j'ai celle-ci :
[/i][/i] Il existe 3 sortes de personnes : ceux qui savent compter, et ceux qui ne savent pas. |
| Changaco | |
| 951 Posts |
Intéressant car ta méthode permet de parcourir les cookies une seule fois contrairement à la fonction de quirksmode. Merci. D'autres ? Modifié par CNeo (30 Jul 2007 - 08:55) |
| Gatsu35 | |
| 225 Posts |
http://www.quirksmode.org/js/cookies.html et tu y trouveras 3 fonctions bien utiles sur les cookies |
| Changaco | |
| 951 Posts |
Gatsu35 a écrit :C'est celles que j'ai mis en lien dans mon premier message ... |
| Changaco | |
| 951 Posts |
Édit de la fonction de QuentinC à cause du BBCode.
|
| Changaco | |
| 951 Posts |
De nouveau une correction pour que "cookies.length" ne soit pas égal à "1" quand il n'y a rien.
Note : j'ai changé les noms pour moi mais j'ai la flemme de tout remettre comme avant. Modifié par CNeo (30 Jul 2007 - 10:41) |
| Julien Royer | |
| Modérateur 4163 Posts |
Hello, Personnellement j'utilise ceci :
God rest the souls of that poor family. And pussy’s half price for the next 15 minutes. |
| Julien Royer | |
| Modérateur 4163 Posts |
QuentinC a écrit : Problème potentiel pour certaines valeurs (que l'on n'utilisera sans doute pas pour les noms de cookies) :
Modifié par Julien Royer (30 Jul 2007 - 14:21) God rest the souls of that poor family. And pussy’s half price for the next 15 minutes. |
| QuentinC | |
Étudiant qui bosse ... ou pas 4885 Posts |
a écrit : Certes.... j'ai pas pensé à ça mais c'est en effet peu probable Merci pour la correction du bug si tableau vide, je n'y ai pas pensé non plus. Sinon, j'ai ça aussi en stock : eval(document.cookie.split(";").join("; ").replace(/=([^=;]*)/g, "=\"$1\"").replace(/=\"([0-9]+(\\.[0-9]+)?)\"/g, "=$1")); Pas mal pour impressionner... ça crée des variables globales. Il existe 3 sortes de personnes : ceux qui savent compter, et ceux qui ne savent pas. |
| Changaco | |
| 951 Posts |
J'ai voulu faire un mixte entre la solution de QuentinC qui permet de ne pas parcourir tous les cookies à chaque fois que l'on chercher une valeur et celle de Julien avec un élégant objet. Le problème c'est que ça ne marche pas. J'ai des données que je rentre dans un tableau et qui disparaissent, seule la première reste. Étant donné que j'y ai passé une bonne partie de l'après-midi je suppose que ça doit être un comportement que je ne connais pas dû au fait d'utiliser un objet.
Quand je teste dans la fonction initiate les valeurs alors elles sont là mais quand je teste n'importe où ailleurs que se soit à l'intérieur ou à l'extérieur de l'objet seule la première valeur rentrée est accessible. Quelqu'un aurait-il une idée ? Modifié par CNeo (31 Jul 2007 - 09:22) |
| QuentinC | |
Étudiant qui bosse ... ou pas 4885 Posts |
Et si tu utilisais this ?
Il existe 3 sortes de personnes : ceux qui savent compter, et ceux qui ne savent pas. |
| Changaco | |
| 951 Posts |
Ça ne change rien. Attendez j'ai trouvé je vais expliquer. Modifié par CNeo (31 Jul 2007 - 09:32) |
| Changaco | |
| 951 Posts |
En fait c'était tout con : "document.cookie" revoie une chaîne qui pour séparer chaque valeur utilise les deux caractères "; " et pas seulement ";". Voilà donc le code :
Maintenant il faudrait savoir laquelle on va mettre dans les fonctions utiles ? Modifié par CNeo (31 Jul 2007 - 09:46) |
| QuentinC | |
Étudiant qui bosse ... ou pas 4885 Posts |
Pour que ce soit un peu plus portable, je remplacerais cette ligne :
par :
Parce qu'apparament l'espace suppplémentaire n'est pas présent partout ni avec tous les navigateurs. En tout cas je n'ai jamais eu de problème avec ça. Il existe 3 sortes de personnes : ceux qui savent compter, et ceux qui ne savent pas. |
| Julien Royer | |
| Modérateur 4163 Posts |
Voici ma proposition :
Petites précisions : - A mon avis, l'utilisation de escape et unescape est importante. - Je ne suis pas très favorable à la mise en cache de tous les cookies, étant donné que l'utilisateur peut les modifier ailleurs dans son code sans passer par nos fonctions. <edit>Suppression de getAll qui ne fonctionnait pas sous IE. Modifié par Julien Royer (31 Jul 2007 - 15:27) God rest the souls of that poor family. And pussy’s half price for the next 15 minutes. |
| Changaco | |
| 951 Posts |
Pourquoi l'utilisateur irait modifier des cookies ? Franchement la mise en cache fait à mon avis gagné du temps d'exécution. De plus tu utilises deux fois des regexp ceux qui ralenti encore le script ( à moins qu'en Javascript ce ne soit pas pareil qu'en PHP ? ). Ensuite il suffit de réfléchir un peu pour se rende compte que normalement il n'y a rien de super important dans des cookies ( le pourquoi de ce sujet vient d'une utilisation sur des menus pour savoir s'ils sont masqués ou non ) donc si la valeur est modifié par l'utilisateur c'est son problème ... Édit : pour le "escape" ça peut peut-être servir je le rajoute dans la mienne. Modifié par CNeo (31 Jul 2007 - 11:18) |
| Julien Royer | |
| Modérateur 4163 Posts |
CNeo a écrit : Il se peut que plusieurs scripts s'exécutent en même temps sur ta page, dont certains que tu ne maîtrises pas... CNeo a écrit : Le fait que les regexp soient plus lentes que l'utilisation de split reste à prouver. CNeo a écrit : Peut-être, mais le pourquoi a peu d'importance, il me semble que le but du sujet est bien de proposer des fonctions utilisables ailleurs. Franchement, je ne suis pas convaincu que le temps d'exécution gagné vaille vraiment la peine de se compliquer la vie avec une mise en cache. Si l'utilisateur des fonctions souhaite gagner du temps, il peut très bien mettre lui-même en cache l'objet que lui a retourné la fonction. God rest the souls of that poor family. And pussy’s half price for the next 15 minutes. |
| Changaco | |
| 951 Posts |
Julien Royer a écrit :Ce n'est pas le cas dans mon projet actuel. Julien Royer a écrit :En PHP il me semble que les regexp sont plutôt lentes mais j'avoue que pour le Javascript je ne sais pas. Julien Royer a écrit :Oui c'est bien le but. Julien Royer a écrit :Tu sais ce qu'on dit : "1ms+1ms+1ms..." et aussi le fameux "il n'y a pas de petits gestes quand on est 60 millions à les faire" qui s'applique bien en informatique aussi. Je pense que nos deux objets répondent à deux demandes différentes donc soit on met les deux soit on ne met que la tienne c'est à toi de décider en sachant que de toute façon il restera ce sujet comme trace et qu'il peut-être mis en lien. |
| Julien Royer | |
| Modérateur 4163 Posts |
CNeo a écrit : Moi non plus, c'est à tester. CNeo a écrit : Je sais surtout que : Donald Knuth a écrit : (voir sur Wikipédia) et je pense que c'est bien plus important pour être un bon programmeur. CNeo a écrit : Je suis bien d'accord. Par contre, pourquoi n'émets-tu pas l'hypothèse de ne mettre que le tien ? Pour ma part, je pense que l'on peut mettre les deux. God rest the souls of that poor family. And pussy’s half price for the next 15 minutes. |
Pages : [>] |
|