Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Javascript Popup - dynam. Fenstergröße

Empfohlene Antworten

Veröffentlicht

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.

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

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?

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

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.

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!

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.