molily: IE Problem mit window.resizeTo

Beitrag lesen

Hallo Umbratus,

Keine Probleme mit Netscape4, Opera.... leider passiert es im IE5 und IE6
manchmal (beim ersten Öffnen eines Bildes?!?), dass die Größe des Fensters
nicht eingestellt wird.

Das ist logisch, denn...

var pic = new Image;
pic.src = path;

...hiermit initiierst du den HTTP-Request. Der Browser bezieht also das Bild vom Server, das dauert einige Zeit.

picwin.resizeTo(pic.width+30,pic.height+90);

Zehntelsekunden später, nachdem das Fenster geöffnet wurde, fragst du bereits die Eigenschaften des Objektes ab. Das Bild ist aber unter Umständen noch längst nicht fertig geladen. Deshalb sind diese Eigenschaften zunächst einmal 0 (Null). Erst wenn das Bild fertig geladen ist (http://selfhtml.teamone.de/javascript/objekte/images.htm#complete), enthalten sie die tatsächlichen Werte. Zum Zeitpunkt des Resize ist aber das Bild in einigen Fällen noch nicht vollständig vom Server bezogen, sodass picwim.resizeTo(0+30, 0+90) ausgeführt wird.

Du musst also vor dem Resize sicher sein, dass das Bild geladen wurde. Dies lässt sich beispielsweise über die genannte Eigenschaft complete abfragen. Da hier aber eine leere while-Schleife (»tu nichts, bis die Grafik geladen ist«) oder eine sich immer wieder aufrufende Funktion (setTimeout) vermutlich unpassend wären, kannst du den onload-Event des Dokuments nutzen, welches du in das Fenster schreibst. Struppi hat es beispielsweise so gelöst: http://home.arcor.de/struebig/js/popup/. Bitte beachte auch, dass es nicht möglich ist, die Fenstergröße exakt an das Bild anzupassen, weil die Browser die Länge und Breite anders interpretieren.

Mathias

--
ss:¬ zu:¬ ls:¬ fo:¬ de:¬ va:¬ ch:¬ sh:¬ n4:¬ rl:¬ br:¬ js:¬ ie:¬ fl:¬ mo:¬
Auflösung != Desktopgrösse != Browserfenstergrösse != Anzeigebereich. [psf 3.7]