tacmot Geschrieben 12. Dezember 2005 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
etherius Geschrieben 12. Dezember 2005 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
tacmot Geschrieben 12. Dezember 2005 Autor Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
etherius Geschrieben 12. Dezember 2005 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
geloescht_JesterDay Geschrieben 12. Dezember 2005 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
tacmot Geschrieben 12. Dezember 2005 Autor Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
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.