Aide aux cookies

Résolu
Annadrill Messages postés 147 Date d'inscription mercredi 9 mai 2007 Statut Membre Dernière intervention 22 novembre 2012 - 11 févr. 2011 à 18:15
Annadrill Messages postés 147 Date d'inscription mercredi 9 mai 2007 Statut Membre Dernière intervention 22 novembre 2012 - 15 févr. 2011 à 18:18
Bonjour,

je réalise un site accessible pour une association et j'aimerais que l'on puisse agrandir ou rapetisser la taille du texte.

Mon problème se pose au niveau des cookies : si qqn peut m'aider à trouver ma faute...

voici mon code :
function growMySize(element, step) 
{
    step = parseInt(step,10);
    var el = document.getElementById(element);
    var curFont = parseInt(el.style.fontSize,10);
    el.style.fontSize = (curFont+step) + 'px';
}

function resetMySize(element)
{

var el = document.getElementById(element);
el.style.fontSize = '16px';
}

function setMySize(Pixels)
{	
var el = document.getElementById('contentcorps');
el.style.fontSize = Pixels;
}


/*************cookie*************/

//récupère le nom et la valeur du cookie
function GetCookie ()
{
var cookValue = "" ;
var cookName = "" ;
 
//position de "=" dans le cookie
var egal = document.cookie.indexOf( "=" ) ;
 
//on prend la sous-chaine comprise entre le début du cookie et le "="
cookName = document.cookie.substring ( 0, egal ) ;
 
//on prend la sous-chaine comprise entre le "=" et le ";" donc sa valeur
cookValue = document.cookie.substring ( egal + 1 ) ;
 
//affiche le nom du cookie
setMySize(cookValue);
 
//affiche la valeur du cookie

}
 
//crée le cookie avec la valeur saisie en paramètre
function SetCookie (name, value)
{
//nouvel objet date
var aujourdhui = new Date() ;
 
//nouvel objet date
var expdate = new Date() ;
 
//plus an an à partir d'aujourdh'ui le cookie ne s'efface jamais
expdate.setTime( aujourdhui.getTime() + ( 365*24*60*60*1000 ) ) ;
 
//creation du cookie de nom name et de valeur saisie en paramètre
document.cookie = name + "=" + value + ";expires=" + expdate.toGMTString() ;
}
 
//demande à l'utilisateur un nom et une valeur de cookie
window.onunload = function(e) 
 {
//création du cookie
var el = document.getElementById(element);
    var curFont = parseInt(el.style.fontSize,10);
SetCookie ( "mySize", curFont ) ;
 
//récupération du nom et de la valeur

}
window.onload = function(e) {
 GetCookie () ;
//Lancement de la Ask()

}


Merci d'Avance ! :)


Annadrill

8 réponses

007Julien Messages postés 276 Date d'inscription mercredi 22 septembre 2010 Statut Membre Dernière intervention 8 janvier 2014 4
12 févr. 2011 à 19:56
el.style.fontSize = Pixels+'px';

serait préférable...

Sinon voir ceci ou encore cela.

Enfin, l'emploi conjugué de la touche Ctrl et de la molette de la souris permet, sur les navigateurs récents, des changements de taille éloquents.
3
Annadrill Messages postés 147 Date d'inscription mercredi 9 mai 2007 Statut Membre Dernière intervention 22 novembre 2012
14 févr. 2011 à 21:21
BOn je me parle à moi-même ce soir haha, voici le dernier code,
j'ai mis ensemble les deux du dessus, sur mon test cela fonctionne parfaitement, et online il n y a que le cookie de la style cheet qui fonctionne...

Merci pour celle ou celui qui trouvera l'erreur... moi je

le code :
function growMySize(element, step) 
{
    step = parseInt(step,10);
    var el = document.getElementById(element);
    var curFont = parseInt(el.style.fontSize,10);
    el.style.fontSize = (curFont+step) + 'px';
}

function resetMySize(element)
{

var el = document.getElementById(element);
el.style.fontSize = '16px';
}

function setMySize(Pixels)
{	

    var el = document.getElementById('contentcorps');
   
    el.style.fontSize = Pixels + 'px';
}

function setActiveStyleSheet(title) {
  var i, a, main;
  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
    if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) {
      a.disabled = true;
      if(a.getAttribute("title") title) a.disabled false;
    }
  }
}

function getActiveStyleSheet() {
  var i, a;
  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
    if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title") && !a.disabled) return a.getAttribute("title");
  }
  return null;
}

function getPreferredStyleSheet() {
  var i, a;
  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
    if(a.getAttribute("rel").indexOf("style") != -1
       && a.getAttribute("rel").indexOf("alt") == -1
       && a.getAttribute("title")
       ) return a.getAttribute("title");
  }
  return null;
}



function createCookie(name,value,days) {
if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
}
else var expires = "";
document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}


window.onunload = function() 
 {
//création du cookie
 var title = getActiveStyleSheet();
var el = document.getElementById('contentcorps');
    var curFont = parseInt(el.style.fontSize,10);
    el.style.fontSize = curFont + 'px';
 createCookie("mySizeSaved", curFont, 365);
 
  createCookie("style", title, 365);
//récupération du nom et de la valeur

}
window.onload = function() {
//Lancement de la Ask()
var cookie = readCookie("style");
  var title = cookie ? cookie : getPreferredStyleSheet();
var pixels = readCookie('mySizeSaved');
if (pixels) {
setMySize(pixels);
alert(pixels);

  setActiveStyleSheet(title);
}}

var cookie = readCookie("style");
var pixels = readCookie('mySizeSaved');
var title = cookie ? cookie : getPreferredStyleSheet();
setActiveStyleSheet(title);
Annadrill
3
Annadrill Messages postés 147 Date d'inscription mercredi 9 mai 2007 Statut Membre Dernière intervention 22 novembre 2012
14 févr. 2011 à 17:04
Hello,
merci pour cette réponse,

je suis allé lire les liens et ai essayé d'arranger mon code :

function growMySize(element, step) 
{
    step = parseInt(step,10);
    var el = document.getElementById(element);
    var curFont = parseInt(el.style.fontSize,10);
    el.style.fontSize = (curFont+step) + 'px';
}

function resetMySize(element)
{

var el = document.getElementById(element);
el.style.fontSize = '16px';
}

/*function setMySize(Pixels)
{	
var el = document.getElementById('contentcorps');
el.style.fontSize = Pixels;
}*/


/*************cookie*************/


function createCookie(name,value,days) {
if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
}
else var expires = "";
document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}

 
//demande à l'utilisateur un nom et une valeur de cookie
window.onunload = function() 
 {
//création du cookie
var el = document.getElementById('contentcorps');
    var curCookie el.style.fontSize Pixels+'px';
createCookie("mySizeSaved", curCookie, 7);
 
//récupération du nom et de la valeur

}
window.onload = function() {

var pixels = readCookie('mySizeSaved')
if (pixels) {
var el = document.getElementById(element);
el.style.fontSize = pixels +'px';
}

}



Mais je dois avoir un souci pour récupérer mon cookie...
Si quelqu'un peut m'aider à la trouver...

L'idée est de créer un cookie avec la valeur en pixels qui a été modifiée par growMySize() et de la récupérer lorsque l'utilisateur change de page pour afficher le texte à la taille choisie.


Merci d'Avance
Annadrill
0
007Julien Messages postés 276 Date d'inscription mercredi 22 septembre 2010 Statut Membre Dernière intervention 8 janvier 2014 4
14 févr. 2011 à 18:14
La création du cookie paraît curieuse avec cette double égalité pour curCookie ? Ne conviendrait-il pas de procéder avec un parseInt, comme pour growMySize ?

Avec l'explorateur dans windows, Il est toujours possible d'aller voir le cookie (répertoire : C:\Documents and Settings\Nom_Utilisateur\Local Settings\Temporary Internet Files) et de le lire sans se préoccuper des avertissements...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Annadrill Messages postés 147 Date d'inscription mercredi 9 mai 2007 Statut Membre Dernière intervention 22 novembre 2012
14 févr. 2011 à 18:44
Hello, merci de la réponse,

oui en effet xD,

je crois qu'au début du code j'ai déjà un souci

car ma fonction setMySize ne fonctionne pas
function growMySize(element, step) 
{
    step = parseInt(step,10);
    var el = document.getElementById(element);
    var curFont = parseInt(el.style.fontSize,10);
    el.style.fontSize = (curFont+step) + 'px';
}

function resetMySize(element)
{

var el = document.getElementById(element);
el.style.fontSize = '16px';
}

function setMySize(Pixels)
{	
var el = document.getElementById('contentcorps');
el.style.fontSize = Pixels;
}


et tu propose ceci ? où ai-je mal compris ? car rien ne bouge...
window.onunload = function() 
 {
//création du cookie
var el = document.getElementById('contentcorps');
    var curFont = parseInt(el.style.fontSize,10);
createCookie("mySizeSaved", curCookie, 7);
 
//récupération du nom et de la valeur

}
window.onload = function() {
//Lancement de la Ask()
var pixels = readCookie('mySizeSaved')
if (pixels) {
var el = document.getElementById('contentcorps');
el.style.fontSize = pixels +'px';
}


}


Annadrill
0
Annadrill Messages postés 147 Date d'inscription mercredi 9 mai 2007 Statut Membre Dernière intervention 22 novembre 2012
14 févr. 2011 à 18:46
oups erreur :
var el =  document.getElementById('contentcorps');
    var  curCookie   = parseInt(el.style.fontSize,10);
createCookie("mySizeSaved", curCookie, 7);

Annadrill
0
Annadrill Messages postés 147 Date d'inscription mercredi 9 mai 2007 Statut Membre Dernière intervention 22 novembre 2012
14 févr. 2011 à 20:56
N'y comprenant rien, j'ai recommencé mon code.
j'ai fait deux pages test incluant ce code :

function growMySize(element, step) 
{
    step = parseInt(step,10);
    var el = document.getElementById(element);
    var curFont = parseInt(el.style.fontSize,10);
    el.style.fontSize = (curFont+step) + 'px';
}

function resetMySize(element)
{

var el = document.getElementById(element);
el.style.fontSize = '16px';
}

function setMySize(Pixels)
{	

    var el = document.getElementById('test');
   
    el.style.fontSize = Pixels + 'px';
}

function createCookie(name,value,days) {
if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
}
else var expires = "";
document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}


window.onunload = function() 
 {
//création du cookie
var el = document.getElementById('test');
    var curFont = parseInt(el.style.fontSize,10);
    el.style.fontSize = curFont + 'px';
 createCookie("mySizeSaved", curFont, 365);
//récupération du nom et de la valeur

}
window.onload = function() {
//Lancement de la Ask()
var pixels = readCookie('mySizeSaved')
if (pixels) {
setMySize(pixels);
alert(pixels);
}}

Et là ca roule sans aucun souci...
je le teste sur mon site, plus de cookie qui se sauve....

parcontre j'ai ce code ci sur mon site qui fonctionne :
function setActiveStyleSheet(title) {
  var i, a, main;
  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
    if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) {
      a.disabled = true;
      if(a.getAttribute("title") title) a.disabled false;
    }
  }
}

function getActiveStyleSheet() {
  var i, a;
  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
    if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title") && !a.disabled) return a.getAttribute("title");
  }
  return null;
}

function getPreferredStyleSheet() {
  var i, a;
  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
    if(a.getAttribute("rel").indexOf("style") != -1
       && a.getAttribute("rel").indexOf("alt") == -1
       && a.getAttribute("title")
       ) return a.getAttribute("title");
  }
  return null;
}



function createCookie(name,value,days) {
  if (days) {
    var date = new Date();
    date.setTime(date.getTime()+(days*24*60*60*1000));
    var expires = "; expires="+date.toGMTString();
  }
  else expires = "";
  document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
  var nameEQ = name + "=";
  var ca = document.cookie.split(';');
  for(var i=0;i < ca.length;i++) {
    var c = ca[i];
    while (c.charAt(0)==' ') c = c.substring(1,c.length);
    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
  }
  return null;
}

window.onload = function(e) {
  var cookie = readCookie("style");
  var title = cookie ? cookie : getPreferredStyleSheet();
  setActiveStyleSheet(title);
}

window.onunload = function(e) {
  var title = getActiveStyleSheet();
  createCookie("style", title, 365);
}

var cookie = readCookie("style");
var title = cookie ? cookie : getPreferredStyleSheet();
setActiveStyleSheet(title);





Si quelqu'un voit le problème qu'il me vienne en aide
Annadrill
0
Annadrill Messages postés 147 Date d'inscription mercredi 9 mai 2007 Statut Membre Dernière intervention 22 novembre 2012
15 févr. 2011 à 18:18
J'ai déplacé la partie window.onload et onunload directement dans l'index.php plutôt que dans le fichier js et cela fonctionne parfaitement...

Bonne soirée et merci beaucoup pour l'aide :
el.style.fontSize = Pixels+'px';

sans laquelle j'aurai cherché ailleurs mon problème...

:D

Annadrill
0
Rejoignez-nous