tacmot Geschrieben 12. Dezember 2005 Geschrieben 12. Dezember 2005 Hallo Gemeinde, ich hab ein kleines Problem mit dem dynamischen Anpassen des Browserfensters an ein darin enthaltenes Bild. function showIMG(img) { myImg = new Image(); myImg.src = img; var width = myImg.width; var height = myImg.height; //self.alert(width); imgWin = window.open('', '', 'width=' + width + ', height=' + height); with (imgWin.document) { open(); write('<HTML>'); write(' <HEAD>'); write(' <title>Testseite</title>'); write(' </HEAD>'); write(' <BODY style="margin: 0px;" onLoad="self.focus();">'); write(' <a href="" onClick="JavaScript:self.close()">') write(' <img src="' + img + '" alt="zum Schließen klicken" title="zum Schließen klicken" border="0"></a>'); write(' </BODY>'); write('</HTML>'); close(); } } Problem ist, das er das Fenster erst beim 2. Aufrufen des Links an das Bild anpasst?! Nach dem Schließen des Browsers muss man also immer erst 2x den Link anklicken um das Bild passend zu sehen. Weiß jemand woran das liegt? Danke. Zitieren
etherius Geschrieben 12. Dezember 2005 Geschrieben 12. Dezember 2005 Ich denke dein Problem wird sein dass: var width = myImg.width; var height = myImg.height; die Werte width und height nicht definiert sind. lass sie dir am Besten mal mit window.alert(myImg.width); // oder window.alert(myImg.height); ausgeben. steht wahrscheinlich "undefined" drin ... Meines Wissens greifst du mit den width und height eigenschaften auf die CSS Eigenschaften des Bildes zu. Diese sind natürlich grundsätzlich erstmal nicht definiert, es sei denn du hast sie explizit festgelegt ... mfg Eth Zitieren
tacmot Geschrieben 12. Dezember 2005 Autor Geschrieben 12. Dezember 2005 Also beim ersten Aufruf sind Höhe und Breite = 0 Erst danach sind die Bildmaße bekannt?! Lässt sich das ganze überhaupt dynamisch gestalten oder sollte ich die Fenstergrößen fix übergeben? Zitieren
etherius Geschrieben 12. Dezember 2005 Geschrieben 12. Dezember 2005 Also ich hab damals sowas gebastelt und es hat mich zum Verzweifeln gebracht ... ich hab dann im Endeffekt serverseitig mit php die Bildgröße ausgelesen ... http://de2.php.net/getimagesize muss man allerdings die GD extension installiert haben und die dann dem Fenster halt die Fixe Größe in den Aufruf mit übergeben ... Vielleicht gehts noch anders aber ich wüsste es jetzt nicht... Hat ein bisschen länger gedauert ... uns ist grad die Inet-Verbindung zusammengebrochen (****** WLAN) und ich durfte erstmal auf den Fallback umstellen ... grml ... mfg Eth Zitieren
geloescht_JesterDay Geschrieben 12. Dezember 2005 Geschrieben 12. Dezember 2005 Also beim ersten Aufruf sind Höhe und Breite = 0 Erst danach sind die Bildmaße bekannt?! Lässt sich das ganze überhaupt dynamisch gestalten oder sollte ich die Fenstergrößen fix übergeben? Ja, aber die Größe ist erst nach dem vollständigen Laden bekannt (bei dir liegt das Bild nach dem ersten Laden im Cache und ist deswegen vielleicht schon bekannt)... ich hab das so gemacht, dass ich eine Funktion aufrufe im Body onload und in der Funktion: window.resizeTo(self.document.images[0].width+50, self.document.images[0].height+100); Die Seite enthält nur 1 Bild, das +50 und +100 isr nur, um einen Rand um das Bild zu haben. Das Event onload wird immer erst ausgelöst, wenn die Seite komplett geladen ist. Zitieren
tacmot Geschrieben 12. Dezember 2005 Autor Geschrieben 12. Dezember 2005 Ja, aber die Größe ist erst nach dem vollständigen Laden bekannt (bei dir liegt das Bild nach dem ersten Laden im Cache und ist deswegen vielleicht schon bekannt)... ich hab das so gemacht, dass ich eine Funktion aufrufe im Body onload und in der Funktion: window.resizeTo(self.document.images[0].width+50, self.document.images[0].height+100); Die Seite enthält nur 1 Bild, das +50 und +100 isr nur, um einen Rand um das Bild zu haben. Das Event onload wird immer erst ausgelöst, wenn die Seite komplett geladen ist. Ja, so hab ich es jetzt auch gemacht, danke! Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.