Chrome, Safari et Cookies...
Le
unbewusst.sein
je teste un script concernat les cookies.
il marche nickel avec Chrome et Firefox, pas avec Safari.
il s'agit d'enregistrer un objet :
var datas={'cat': 2, 'limit': 18, 'offset': 0, 'rowid': 244};
dans un cookie.
Malheureusement Safari me dit (console web developer) qu'il n'y a pas de
cookie associé à ma page, donc je ne peux voir son contenu de cette
manière
Ce qui se passe :
quand je lit le cookie, Safari me retourne par :
console.log("readCookieObject() : object = "+object);
# -> readCookieObject() : object = { 'cat': 2
dons, à la suite de ce console.log j'ai un :
object = eval(" ( " + object + " ) ");
qui me donne, bien évidemment une erreur de syntaxe :
SyntaxError: Expected token '}'
Alors que ça marche très bien sur Chrome, Nightly et Opera
Je suspecte un problème avec une espace ou la virgule.
Le code est accessible ici :
<http://82.226.217.239/js_lib/tests/cookieObject_TEST.html>
Bon, le but de la manip est d'enregistrer l'état d'une fenêtre pour la
ré-ouvrir dans le même état
Peut-être n'est-ce pas le bon moyen en utilisant un cookie ?
--
« Si tous ceux qui n'ont rien n'en demandaient pas plus,
il serait bien facile de contenter tout le monde. »
(Coluche)
il marche nickel avec Chrome et Firefox, pas avec Safari.
il s'agit d'enregistrer un objet :
var datas={'cat': 2, 'limit': 18, 'offset': 0, 'rowid': 244};
dans un cookie.
Malheureusement Safari me dit (console web developer) qu'il n'y a pas de
cookie associé à ma page, donc je ne peux voir son contenu de cette
manière
Ce qui se passe :
quand je lit le cookie, Safari me retourne par :
console.log("readCookieObject() : object = "+object);
# -> readCookieObject() : object = { 'cat': 2
dons, à la suite de ce console.log j'ai un :
object = eval(" ( " + object + " ) ");
qui me donne, bien évidemment une erreur de syntaxe :
SyntaxError: Expected token '}'
Alors que ça marche très bien sur Chrome, Nightly et Opera
Je suspecte un problème avec une espace ou la virgule.
Le code est accessible ici :
<http://82.226.217.239/js_lib/tests/cookieObject_TEST.html>
Bon, le but de la manip est d'enregistrer l'état d'une fenêtre pour la
ré-ouvrir dans le même état
Peut-être n'est-ce pas le bon moyen en utilisant un cookie ?
--
« Si tous ceux qui n'ont rien n'en demandaient pas plus,
il serait bien facile de contenter tout le monde. »
(Coluche)

Poser une question


Bon, j'ai progressé, dans la partie du script lisant le cookie, j'ai :
var ca = document.cookie.split(';');
si je fais un print des valeurs de ca par :
console.log("readCookie() : ca["+i+"] = "+ca[i]);
je n'en ai qu'une qui vaut :
readCookie() : ca[0] = org.ytho.landp.datas={ 'cat': 2
donc le problème est à l'écriture ou la lecture ???
si je fais :
console.log("readCookie() : document.cookie = "+document.cookie);
ça me retourne :
readCookie() : document.cookie = org.ytho.landp.datas={ 'cat': 2
donc ça ne vient pas de la fonction readCookie()
donc je regarde ce qu'enregistre createCookie() par :
console.log("createCookie() : document.cookie "+name+"="+value+expires+"; path=/");
étant entendu que c'est ce que je mets dans le cookie :
document.cookie = name+"="+value+expires+"; path=/";
et là, ça me donne une valeur qui me semble correcte :
createCookie() : document.cookie = org.ytho.landp.datas={ 'cat': 2,
'limit': 18, 'offset': 0, 'rowid': 244, 'sum': 264 }; expires=Fri, 19
Oct 2012 07:52:52 GMT; path=/
Seule hypothèse : Safari n'aime pas les "," de mon objet ???
--
« Si tous ceux qui n'ont rien n'en demandaient pas plus,
il serait bien facile de contenter tout le monde. »
(Coluche)
Apparemment, d'a^rès une recherche Google, "ça a eu été" un bugg connu"
Matt Neubourh renvoie à une page de faq sur safari, qui n'existe plus.
même aves l'application "Cocoa Cookie" je ne vois pas mon cookie,
peut-être est-ce du à mon adresse :
http://82.226.217.239/js_lib/tests/cookieObject_TEST.html
_______^^^^^^^^^^^^^^^___________________________________
????
qui est mon localhost ???
--
« Si tous ceux qui n'ont rien n'en demandaient pas plus,
il serait bien facile de contenter tout le monde. »
(Coluche)
Si je farfouille dans ~/Library/Cookies, je vois des fichiers :
com.apple.appstore.plist
com.apple.appstore.plist - corrupt
Cookies.binarycookies
Cookies.plist
Cookies.plist_tmp_217_0.dat
et ni dans Cookies.plist ni dans Cookies.plist_tmp_217_0.dat
il n'y a de trace de mon cookie, repéré par son nom
"org.ytho.landp.datas"
je ne sais pas lire les "Cookies.binarycookies"...
--
« Si tous ceux qui n'ont rien n'en demandaient pas plus,
il serait bien facile de contenter tout le monde. »
(Coluche)
encode les cookies comme les urls
var=escape(data)
A+
Bol
ATTENTION : encode() fonctionne en ISO Latin-1 ! Il vaut mieux utiliser
encodeURI() ou encodeURIComponent() !
https://developer.mozilla.org/en/Ja.../encodeURI