Stefan GW: IE und window.open: Eigenwillige Fenstergrößen

Hallo Leute,

die Größe von mit window.open geöffneten Fenstern hängt bei IE nicht allein von "width" und "height", sondern auch von anderen Parametern ab. So erhält ein Fenster durch die Angabe "menubar=1" einen Zuschlag von 19 Pixeln Höhe.

Ausnahme: Die Kombination "toolbar=1,location=1,directories=1,status=1,menubar=1". Hier fehlen plötzlich 10px Breite und 140px Höhe, manchmal auch mehr. Sehr eigenartig, oder? Und genau dasselbe in IE 4.0/5.0/5.5.
Alle Versuche mit veränderter Reihenfolge der Parameter, "=yes" statt "=1", anderen Größen, weiteren Parametern usw. hatten dasselbe Ergebnis.

Kennt vielleicht jemand einen Weg, das zu umgehen? Oder kann man sich drauf verlassen, daß alle IEs diese Macke haben (auch der 6er und IE/Mac), und entsprechend größere Werte wählen?

Viele Grüße

Stefan GW

---- zum Testen: -----------------------

<html>
<head>
<script language=JavaScript>

function open_win(param)
{
 para=param;
 popup=window.open('','',param);
 popup.document.open();
 popup.document.write('<html><body onload="document.body.innerHTML=opener.para+'<br><br>ergibt : '+document.body.clientWidth+' x '+document.body.clientHeight"></body></html>');
 popup.document.close();
}

</script>
</head>
<body style='margin:50px'>

<pre>
window.open('','','width=600,height=300, ..

nur menubar=1:
<button onclick="open_win('width=600,height=300,menubar=1')">600 x 319</button>

toolbar=1,location=1,directories=1,status=1:
<button onclick="open_win('width=600,height=300,toolbar=1,location=1,directories=1,status=1')">600 x 300</button>

dasselbe, zusätzlich menubar=1:
<button onclick="open_win('width=600,height=300,toolbar=1,location=1,directories=1,status=1,menubar=1')">590 x 160</button>

wie vor, aber height=100:
<button onclick="open_win('width=600,height=100,toolbar=1,location=1,directories=1,status=1,menubar=1')">590 x -40?</button>
</pre>

</body>
</html>

  1. Hi Stefan.
    Das verhält sich, soweit ich weiss, so:

    Depending to the features you specify in the window.open() method Internet Explorer will surprise
    you with different window sizes:

    window.open("dummy.html","F1","width=400,height=400")
    window.open("dummy.html","F1","width=400,height=400,resizable=1")
    window.open("dummy.html","F1","width=400,height=400,scrollbars=1")

    --->  inner width and inner height are 400px

    window.open("dummy.html","F1","width=400,height=400,resizable=1,location=1,status=1,menubar=1,scrollbars=1,toolbar=1,directories=1")

    --->  outer width and outer height are 400px

    window.open("dummy.html","F1","width=500,height=400,resizable=1,location=1,status=1,menubar=1,scrollbars=1,toolbar=1")

    ---> inner width 400px; inner height 400px plus one scrollbar height

    ABER: unabhängig von den eingestellten Features führt window.resizeTo(x,y)
    immer zu outerWidth=x und outerHeight=y.

    lg Spiff

    1. ... Internet Explorer will surprise you with different window sizes ...

      Hallo Spiff,

      überraschend find ich das wirklich. Anstatt outerHeight mal vernünftig zu implementieren, bauen die solche Merkwürdigkeiten ein.

      Aber genau das war die Erklärung. Besten Dank!

      Stefan GW

  2. Tag Stefan,

    Kennt vielleicht jemand einen Weg, das zu umgehen? Oder kann man sich drauf verlassen, daß alle IEs diese Macke haben (auch der 6er und IE/Mac), und entsprechend größere Werte wählen?

    Nee, es gibt keinen vernünftigen Weg. Merke: Die Fenstergröße, die Du mit width= bzw. height= angibst, ist leider immer "brutto", d.h. einschließlich Festerrahmen, Menüzeile etc. Deshalb ist die nutzbare Fensterfläche dann viel, viel geringer. Um wieviel, das hängt auch noch davon ab, was der Anwender für Schriftgrößen eingestellt hat, wie dick er den Fensterrahmen haben will usw...   :((

    Gruß,

    Martin