Problem mit der Ausrichtung

Pestilence

Mitglied
Schönen guten Tag,
hätte da ein komisches Problem.
Vielleicht fällt einen von euch etwas ein.

Und zwar habe ich einen Link der einen festen Layer öffnen soll der per Javascript ausgerichtet werden soll. (mittig)

Dies sieht wie folgt aus:

PHP:
function makeToStringPX(str)
{
	document.getElementById('flexcontent').value = 	str;
	document.getElementById('flexcontent').value += 'px';
	
	var strValue = document.getElementById('flexcontent').value;
	
	return strValue;
}

function openMaileditor(SID, UID)
{
	var width = Math.floor(((document.width/2)-400));
	var strWidth = makeToStringPX(width);
	
	document.getElementById('dyndiv2').style.top = "155px";
	document.getElementById('dyndiv2').style.left = strWidth+"px";
	document.getElementById('dyndiv2').style.position = "fixed";
	document.getElementById('dyndiv2').style.width = "786px";
	document.getElementById('dyndiv2').style.height = "600px";
	document.getElementById('dyndiv2').innerHTML = '<div class="loadingit"><img src="img/ajax-loader.gif" border="none"></div>';

	Effect.Appear('dyndiv2', { duration: 1.0 });
	
	new Ajax.Updater('dyndiv2', 'worker.php?ssid='+SID+'&action=getMaileditor&uid='+UID, {asynchronous:true, evalScripts:true});
	
	window.setTimeout("toggleEditor('mailtext')",2000);
}

Mit dem Firefox läuft auch alles bestens, aber der IE7&8 macht da seine üblichen Zicken.

Gerade bei dieser Zeile

PHP:
document.getElementById('dyndiv2').style.left = strWidth+"px";

Details zum Fehler auf der Webseite im IE:

Code:
Benutzer-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729)
Zeitstempel: Mon, 9 Nov 2009 08:15:46 UTC


Meldung: Ungültiges Argument.
Zeile: 394
Zeichen: 2
Code: 0
URI: XXXXXXXXXXXX/funktionen.js

So wie es aussieht scheitert es beim zusammensetzten des Wertes...

Hätte da vielleicht jemand ne Idee was der IE daran nicht mag?
 
Zuletzt bearbeitet:
Hi,

die Zeile
Code:
var width = Math.floor(((document.width/2)-400));
wird im IE keinen gültigen Wert liefern. Hier ist es besser über die Eigenschaft getElementsByTagName auf den Body zuzugreifen.
Code:
var width = Math.floor(((parseInt(document.getElementsByTagName('body')[0].offsetWidth)/2)-400));

Weiterhin setzt du zweimal die Einheit px - einmal in der Funktion makeStringToPX und ein weiteres Mal bei der Zuweisung an die Style-Eigenschaft.
Code:
document.getElementById('dyndiv2').style.left = strWidth+"px";
Das quittiert der IE mit einer Fehlermeldung. Also eine Zuweisung der Einheit entfernen.

Zuletzt soll noch angemerkt werden, dass der IE nach wie vor Probleme mit der Positionierung fixed hat.

Ciao
Quaese
 
Danke für deine Antwort Quaese,
ich habe deine Verbesserungen ausprobiert und so funktionierte es wunderbar. Vielen Dank an dich!

btw. das mit der "fixed" Position funktioniert im IE7&8 wunderbar

Aber nun fragte ich mich warum kam der Layer nicht?!

Nach ein wenig mehr Dr. Google:
Das Problem kann man auch ohne Extrafunktion mit etwas weniger Code lösen.

1. IE hat offenbar Probleme mit window. demnach habe ich dort angesetzt und folgende Seite gefunden.

http://www.howtocreate.co.uk/tutorials/javascript/browserwindow

Also die Lösung des ganzen war schlichtweg: document.body.clientHeight/Width
 

Neue Beiträge

Zurück