Habe die Extension fontresizer (fontresize) am laufen. Die Schrift wird auch brav vergrößert und verkleinert. Die zuletzt eingestellt Schriftgröße wird auch im Cookie gespeichert, so dass bei einem Seitenwechsel bzw. bei einer Aktualisierung die zuletzt eingestellt Schriftgröße erhalten bleibt. Allerdings habe ich genau hier noch ein Problem. Und zwar folgendes:
Ich verändere die Schriftgröße durch einen Klick auf den entsprechenden Link. Nun ist die Schrift größer bzw. kleiner. Wechsele ich nun die Seite bzw. aktualisiere wird erst wieder kurz auf die Standardschriftgröße gewechselt und kurz danach auf die im Cookie eingestellte Größe umgesprungen. Dies führt zu einem hässlichen kurzen hüpfen des Textes. Weiß jemand wie ich das in der javascript Datei beim erstellen des Cookies definieren kann, dass er nicht erst wieder kurz auf die "initSize" springt? Mein javascript sieht wie folgt aus:
// Initialize the arrays containing our size info.
var pixelArray = new Array('9px','10px','11px','12px','13px','14px','15px','16px'); // Possible font px sizes
var countOfPixels = pixelArray.length;
var initSize = 3; // Array position of inital px size
function fontSizer(inc) {
/*if (!document.getElementById) return;*/
var size = readCookie('size');
size = parseInt(inc)+parseInt(size);
if (size < 0 ) { size = 0; }
if (size > countOfPixels ) { size = 3; }
doFontSizing(size);
createCookie("size", size, 365);
}
function fontSizerOnLoad(preferredSize) {
/*if (!document.getElementById) return;*/
var size = readCookie('size');
if (size < 0 ) { size = 0; }
if (size > countOfPixels ) { size = 0; }
/*switchPic();*/
doFontSizing(size);
}
function doFontSizing(theFontSize) {
// Bugfix: Elements inside table would not resize with only the code below, so we do them seperatly.
// NOTE: This only resizes the font, nothing else.
// Resize by ID does not work with this.
aTables = document.getElementsByTagName('table');
for(i = 0; i < aTables.length; i++){
aTables[i].style.fontSize = pixelArray[theFontSize];
}
// if you rather want to size an individual element by ID, use this:
// resizeContainer = document.getElementById('nameOfConainingElement');
// and uncomment the if statements at the start of each function
resizeContainer = document.getElementsByTagName('body')[0];
resizeContainer.style.fontSize = pixelArray[theFontSize];
}
function normalSize() {
/*if (!document.getElementById) return;*/
var size = 3;
doFontSizing(size);
createCookie("size", size, 365);
}
function normalSizePrint() {
/*if (!document.getElementById) return;*/
var size = 3;
doFontSizing(size);
}
/*function switchPic(size){
theImage = document.getElementById('dIndexBanner').firstChild;
imagePath = theImage.src;
}*/
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 initSize;
}
window.onload = function(e) {
fontSizerOnLoad(readCookie("size"));
}