2013-05-24 3 views
1

Salut J'ai ce script: http://flamencopeko.net/styleswitch.js qui reliait à de toutes les pages de mon site http://flamencopeko.net. Cela fonctionne bien, sauf que les valeurs stockées ne sont pas appliquées lors du changement de page. La fonctionnalité et les cookies eux-mêmes sont très bien je crois. Les préférences ne vont pas coller visuellement.obtenir des valeurs de cookie pour charger la page changement

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; 
} 

function increaseTableSize() { 
    var t = document.getElementsByTagName('table'); 
    for(i=0;i<t.length;i++) { 
     t[i].style.width = 1000+"px" 
    } 
} 
function decreaseTableSize() { 
    var t = document.getElementsByTagName('table'); 
    for(i=0;i<t.length;i++) { 
     t[i].style.width = 677+"px" 
    } 
} 
function setTableSize() { 
    var t = document.getElementsByTagName('table'); 
    for(i=0;i<t.length;i++) { 
     t[i].style.width = selectedwidth+"px" 
    } 
} 

function increaseFontSize() { 
    var p = document.getElementsByTagName('td'); 
    for(i=0;i<p.length;i++) { 
     p[i].style.fontSize = 16+"px" 
    } 
} 
function decreaseFontSize() { 
    var p = document.getElementsByTagName('td'); 
    for(i=0;i<p.length;i++) { 
     p[i].style.fontSize = 10+"px" 
    } 
} 
function setFontSize() { 
    var t = document.getElementsByTagName('td'); 
    for(i=0;i<t.length;i++) { 
     t[i].style.width = selectedsize+"px" 
    } 
} 

var selectedwidth=readCookie("peko_table") 
if (document.getElementByTagName && selectedwidth!=null) //load user chosen width from cookie if there is one stored 
setTableSize() 

var selectedsize=readCookie("peko_font") 
if (document.getElementByTagName && selectedsize!=null) //load user chosen font from cookie if there is one stored 
setFontSize() 

C'est le code pour les quatre boutons toc.php:

<a href="javascript:createCookie('peko_table','600',50); decreaseTableSize();"><img src="/ico/standard.gif" width="12" height="12" hspace="1" vspace="1" />slim</a>/
    <a href="javascript:createCookie('peko_table','1000',50); increaseTableSize();"><img src="/ico/wide.gif" width="12" height="12" hspace="1" vspace="1" />wide</a>/
    <a href="javascript:createCookie('peko_font','10',50); decreaseFontSize();"><img src="/ico/minus.gif" width="12" height="12" hspace="1" vspace="1" />small text</a>/
    <a href="javascript:createCookie('peko_font','18',50); increaseFontSize();"><img src="/ico/plus.gif" width="12" height="12" hspace="1" vspace="1" />large text</a> 

Répondre

0

Vous utilisez votre JavaScript avant que la page a même été analysé.

Déplacer le JavaScript pour inclure styleswitch.js de la tête juste avant la balise de corps de fermeture.

+0

Merci beaucoup. Je n'aurais jamais pensé à ça pour toujours. Tout fonctionne maintenant, Lee! J'ai trouvé quelques autres bugs moi-même. –

+0

Toute façon d'accélérer les transitions de page? Le style par défaut est toujours affiché pendant environ une seconde en premier. –

+0

@ OleSørensen ha ha, la façon dont votre JavaScript fonctionne, non. Une meilleure approche serait d'avoir JavaScript dans la tête pour lire le cookie et modifier le 'className' de votre élément HTML, puis utiliser CSS pour définir la largeur de votre page/taille de votre texte en fonction du className de l'élément HTML. Alors: refonte, ou vivre avec! –

Questions connexes