Zum Inhalt springen

Fontresizer und Cookie

Erstellt am 30. September 2007 · 1 Antwort · letzte Antwort am 26. November 2007

Tags: Frage

design-galaxie ·

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"));
}
alexliebe ·

Hast Du schon eine Lösung gefunden?

Ich stehe vor einem ähnlichen Problem. Bei mir wird bei jedem Seitenaufruf kurz alles mit sehr großer Schriftgröße dargestellt und springt dann auf die eingestellte Größe zurück. Interessanterweise habe ich diese Größe nirgends definiert. Die Anfangsgröße ist mind 16px.

In meinem style.css hat body 11px und td 1em
Nicht mal meinen H1 hat 16px

Hat jemand eine Idee??? #angry#
Gruß, Alex