Zum Inhalt springen

Javascript Popup - dynam. Fenstergröße


tacmot

Empfohlene Beiträge

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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!

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...