Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Comment stocker une valeur ?

2 réponses
Avatar
Débutant
Bonjour,

Je débute en javascript, j'ai un petit problème.

Le contexte : Il ne s'agit pas d'une page HTML avec du javascript
dessus, je ne suis pas coté serveur.

C'est un script tout seul, qui doit tourner sous Greasemonkey et être
donc greffé chargement de la page d'un site.
Ensuite je le passe au greasemonkey compiler pour en faire une extension
firefox, qui donc se déclenchera sur un site bien précis.

Mon problème est de pouvoir stocker une valeur quand je suis sur une
page du site, et pouvoir la retrouver quand je suis sur une autre.

Une variable globale ne convient pas. Vu que le script redémarre à zéro
à chaque chargement de page, c'est perdu.

J'avais de l'espoir coté cookies, et j'ai trouvé assez facilement la
façon d'en écrire et relire un.
Malheureusement ce site vous ballade sur plusieurs noms de domaine. Vous
êtres sur http://www.site.com, si vous entrez sur la partie forum vous
vous retrouvez sur http://forum.site.com...

Or un cookie ne semble lisible que d'un seul domaine. J'ai vu qu'on
pouvait spécifier le domaine de validité par le paramêtre Domain, et ça
aurait pu m'aller. J'aurais pu écrire depuis le domaine A un cookie
destiné à être lu depuis le domaine B, en spécifiant ce B en domaine.

Mais ça ne marche pas, le cookie n'est pas créé, je n'ai aucune
indication dans la console d'erreurs du navigateur.

J'ai testé sous Greasemonkey, j'en ai fait une extension firefox pour
sortir de Greasemonkey (qui est lui-même une extension), rien ne marche.
Donc je suspecte le système d'extension firefox d'être un peu trop sécurisé.

Quelqu'un peut il me donner une astuce pour passer à coup sur cette
limite de domaine dans l'écriture/lecture d'un cookie ?

Ou bien m'indiquer un autre moyen de mémorisation ? Il faut que ce soit
en dehors du document lui-même, puisqu'à chaque démarrage de mon script
la page vient d'être rechargée.

J'ai pensé à créer une fenêtre non visible et stocker les infos, mais je
ne sais pas si l'idée est bonne. Et puis je n'ai pas trouvé le moyen de
faire une fenêtre d'un autre type que popup, et on les bloque souvent
donc pas bon.

N'importe quoi, même en piratant une propriété du navigateur :-)

Par contre si ça disparait à la fermeture du navigateur ce n'est pas gênant.

Je vous met en dessous le code qui a servi aux tests.
J'ai repiqué les fonctions de lecture/écriture, là où je les ai prises
les utilisateurs disaient que ça marchait. Et j'ai pu constater que sans
spécifier le nom de domaine ça créait bien le cookie.
Sur la partie finale où j'essaie de m'en servir, j'ai testé en mettant
ou non http... devant le nom de domaine, en mettant ou non / à la fin...
Et on passe bien au bon endroit du script, j'ai vérifié.


Merci d'avance.



function EcrireCookie(nom, valeur)
{
var argv=EcrireCookie.arguments;
var argc=EcrireCookie.arguments.length;
var expires=(argc > 2) ? argv[2] : null;
var path=(argc > 3) ? argv[3] : null;
var domain=(argc > 4) ? argv[4] : null;
var secure=(argc > 5) ? argv[5] : false;
document.cookie=nom+"="+escape(valeur)+
((expires==null) ? "" : ("; expires="+expires.toGMTString())) +
((path==null) ? "" : ("; path="+path)) + ((domain==null) ? "" : (";
domain="+domain)) + ((secure==true) ? "; secure" : "");
}

function getCookieVal(offset)
{
var endstr=document.cookie.indexOf (";", offset);
if (endstr==-1) endstr=document.cookie.length;
return unescape(document.cookie.substring(offset, endstr));
}
function LireCookie(nom)
{
var arg=nom+"=";
var alen=arg.length;
var clen=document.cookie.length;
var i=0;
while (i<clen)
{
var j=i+alen;
if (document.cookie.substring(i, j)==arg) return getCookieVal(j);
i=document.cookie.indexOf(" ",i)+1;
if (i==0) break;

}
return null;
}


(function() {
// Reperer la page en cours
var wURL = document.URL;

if (wURL.indexOf("http://www.site.com/") != -1)
{
EcrireCookie("TEST", "TEST",null,"/","forum.site.com");
}
if (wURL.indexOf("http://forum.site.com/") != -1)
{
wtest=LireCookie("TEST");
alert(wtest);
}

}
)();

2 réponses

Avatar
Débutant
Et bien merci, j'ai bien fait de passer par ici :-)

Je me suis débrouillé, c'est bon ;-)

Je repasserai quand je n'aurai besoin de rien, merci les mecs :-)



Bonjour,

Je débute en javascript, j'ai un petit problème.

Le contexte : Il ne s'agit pas d'une page HTML avec du javascript
dessus, je ne suis pas coté serveur.

C'est un script tout seul, qui doit tourner sous Greasemonkey et être
donc greffé chargement de la page d'un site.
Ensuite je le passe au greasemonkey compiler pour en faire une extension
firefox, qui donc se déclenchera sur un site bien précis.

Mon problème est de pouvoir stocker une valeur quand je suis sur une
page du site, et pouvoir la retrouver quand je suis sur une autre.

Une variable globale ne convient pas. Vu que le script redémarre à zéro
à chaque chargement de page, c'est perdu.

J'avais de l'espoir coté cookies, et j'ai trouvé assez facilement la
façon d'en écrire et relire un.
Malheureusement ce site vous ballade sur plusieurs noms de domaine. Vous
êtres sur http://www.site.com, si vous entrez sur la partie forum vous
vous retrouvez sur http://forum.site.com...

Or un cookie ne semble lisible que d'un seul domaine. J'ai vu qu'on
pouvait spécifier le domaine de validité par le paramêtre Domain, et ça
aurait pu m'aller. J'aurais pu écrire depuis le domaine A un cookie
destiné à être lu depuis le domaine B, en spécifiant ce B en domaine.

Mais ça ne marche pas, le cookie n'est pas créé, je n'ai aucune
indication dans la console d'erreurs du navigateur.

J'ai testé sous Greasemonkey, j'en ai fait une extension firefox pour
sortir de Greasemonkey (qui est lui-même une extension), rien ne marche.
Donc je suspecte le système d'extension firefox d'être un peu trop
sécurisé.

Quelqu'un peut il me donner une astuce pour passer à coup sur cette
limite de domaine dans l'écriture/lecture d'un cookie ?

Ou bien m'indiquer un autre moyen de mémorisation ? Il faut que ce soit
en dehors du document lui-même, puisqu'à chaque démarrage de mon script
la page vient d'être rechargée.

J'ai pensé à créer une fenêtre non visible et stocker les infos, mais je
ne sais pas si l'idée est bonne. Et puis je n'ai pas trouvé le moyen de
faire une fenêtre d'un autre type que popup, et on les bloque souvent
donc pas bon.

N'importe quoi, même en piratant une propriété du navigateur :-)

Par contre si ça disparait à la fermeture du navigateur ce n'est pas
gênant.

Je vous met en dessous le code qui a servi aux tests.
J'ai repiqué les fonctions de lecture/écriture, là où je les ai prises
les utilisateurs disaient que ça marchait. Et j'ai pu constater que sans
spécifier le nom de domaine ça créait bien le cookie.
Sur la partie finale où j'essaie de m'en servir, j'ai testé en mettant
ou non http... devant le nom de domaine, en mettant ou non / à la fin...
Et on passe bien au bon endroit du script, j'ai vérifié.


Merci d'avance.



function EcrireCookie(nom, valeur)
{
var argvìrireCookie.arguments;
var argcìrireCookie.arguments.length;
var expires=(argc > 2) ? argv[2] : null;
var path=(argc > 3) ? argv[3] : null;
var domain=(argc > 4) ? argv[4] : null;
var secure=(argc > 5) ? argv[5] : false;
document.cookie=nom+"="+escape(valeur)+
((expires==null) ? "" : ("; expires="+expires.toGMTString())) +
((path==null) ? "" : ("; path="+path)) + ((domain==null) ? "" : (";
domain="+domain)) + ((secure==true) ? "; secure" : "");
}

function getCookieVal(offset)
{
var endstr=document.cookie.indexOf (";", offset);
if (endstr==-1) endstr=document.cookie.length;
return unescape(document.cookie.substring(offset, endstr));
}
function LireCookie(nom)
{
var arg=nom+"=";
var alen=arg.length;
var clen=document.cookie.length;
var i=0;
while (i<clen)
{
var j=i+alen;
if (document.cookie.substring(i, j)==arg) return getCookieVal(j);
i=document.cookie.indexOf(" ",i)+1;
if (i==0) break;

}
return null;
}


(function() {
// Reperer la page en cours
var wURL = document.URL;

if (wURL.indexOf("http://www.site.com/") != -1)
{
EcrireCookie("TEST", "TEST",null,"/","forum.site.com");
}
if (wURL.indexOf("http://forum.site.com/") != -1)
{
wtest=LireCookie("TEST");
alert(wtest);
}

}
)();







Avatar
ASM
Et bien merci, j'ai bien fait de passer par ici :-)

Je me suis débrouillé, c'est bon ;-)


il ne suffit pas de poser des questions
si on a trouvé réponse, on en fait participer

Je repasserai quand je n'aurai besoin de rien, merci les mecs :-)


Même si personne ici ne t'a répondu.

De tte la manière s'il n'y a pas eu réponse, faut se poser la question
du contenu de sa question.
Ce n'est pas un phénomène nouveau sur les ngs.

C'est un script tout seul, qui doit tourner sous Greasemonkey et être
donc greffé chargement de la page d'un site.



déjà ça commence fort ...

Ensuite je le passe au greasemonkey compiler pour en faire une
extension firefox, qui donc se déclenchera sur un site bien précis.



et volà qui enfonce le clou.

Perso, je ne sais ce qu'est greasemonkey et encore moins
greasemonkey-complileur (ni même ce qu'est un compileur et je m'en passe
tous les jours).

J'avais de l'espoir coté cookies, et j'ai trouvé assez facilement la
façon d'en écrire et relire un.
Malheureusement ce site vous ballade sur plusieurs noms de domaine.
Vous êtres sur http://www.site.com, si vous entrez sur la partie forum
vous vous retrouvez sur http://forum.site.com...



par contre ça je pense l'avoir vu passer aussi par ailleurs, et je crois
que tu as dû avoir des réponses même si non satisfaisantes.


--
Stephane Moriaux et son (moins) vieux Mac déjà dépassé