Ankündigung

Einklappen
Keine Ankündigung bisher.

Probleme mit resizeTo

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Probleme mit resizeTo

    Es ist zum Wahnsinnigwerden! Ich möchte mit PHP und JavaScript ein Bild in einem Pop-Up öffnen und dabei die Pop-Up-Größe dynamisch ermitteln. Theoretisch klappt das auch, nur das Fenster ist nach der Größenänderung mit resizeTo immer ein bisschen zu klein. O_o
    Hier mal mein Code:

    gallery.php
    Code:
    <script language="JavaScript" type="text/JavaScript">
         <!--
          function openWin(imgSrc)
           {
            var w = window.open('bildansicht.php?datei='+imgSrc, '', 'toolbar=no,width=100,height=100,left=100, top=100, status=no,scrollbars=no,resizable=yes,menubar=no');
           }
         //-->
        </script>
    
    Bild1
    bildansicht.php
    Code:
    <?php
    $imgsize=GetImageSize("$datei");
    ?><html>
    <head>
    <title>Bildansicht</title>
     <script language="JavaScript">
         <!--
          self.resizeTo(<?php echo("$imgsize[0], $imgsize[1]");?>);
         //-->
        </script>
    </head>
    <body topmargin="0" leftmargin="0" scroll="no">
     [img]<?php echo([/img]" border="0" galleryimg="no">
    </body>
    </html>
    Hier mal ein Screenshot, wies bei mir aussieht: prob.jpg
    Und hier die Gallery-Versuchs-Seite: gallery.php

    Also, ich hoffe, jemandem ist der Fehler verständlicher, als mir... ^^

  • #2
    resizeTo ändert afair die Größe des gesamten Fensters auf die angegebenen Werte. NICHT die Größe des Anzeigebereichs.

    Du müsstest also noch dazurechnen, wieviel Platz wohl die Ränder, Menuleisten etc. verbrauchen...

    Kommentar


    • #3
      Hallo, du hast mehrere Möglichkeiten und potenzielle Fehlerquellen:

      Was steht in resizeTo() drin? Die Fenstergröße sieht mir verdächtig nach 100x100 Default aus.

      Exakt die Ausmaße des Fensters sind etwas zu grob. Wie hier empfohlen:
      http://www.phpfriend.de/forum/ftopic59126.html
      solltest du einen DOCTYPE verwenden, damit Firefox und Internet Explorer die Fenstergröße beim Öffnen beide gleich handhaben (sonst nimmt Firefox die innere Breite, IE die äußere (oder umgekehrt, bin nicht sicher)).

      Im Firefox kann man "move or resize existing window" durch JavaScript deaktivieren. Warum öffnest du das Fenster also nicht bereits in der optimalen Größe?

      Mit window.innerWidth [FF] bzw. document.body.offsetWidth [IE] kannst du die innere Fenster-Breite bestimmen (erst nach Laden der Seite). Diesen Wert von der Bildbreite abgezogen ergibt den Wert, den du z.B. resizeBy() übergeben könntest. Gleiches gilt für die Höhe.

      Kommentar


      • #4
        Zitat von Zergling
        Warum öffnest du das Fenster also nicht bereits in der optimalen Größe?
        Genau dann passt das Fenster auch sofort. Und du mußt nicht unterscheiden, welcher Browser jetzt outer und innerHeight unterstützt usf.

        Kommentar


        • #5
          Zitat von nikosch77
          Zitat von Zergling
          Warum öffnest du das Fenster also nicht bereits in der optimalen Größe?
          Genau dann passt das Fenster auch sofort. Und du mußt nicht unterscheiden, welcher Browser jetzt outer und innerHeight unterstützt usf.
          Naja, normalerweise möchte ich ja mehr als ein Bild auf die Art öffnen. Hatte das nur in dem Beispiel mal mit einem Bild gemacht.

          Ich hab das ganze jetzt (mit meinen spärlichen JavaScript-Kenntnissen ) mit resizeBy probiert und es hat geklappt
          Hab window.innerWidth und document.body.offsetWidth gar nicht gebraucht, weil mein Standardfenster ja eh mit 100x100 Pixeln geöffnet wird (wenn ich das resizeTo weglasse)... ^^
          Vielen Dank also!

          Kommentar


          • #6
            naja, genau wie imgSrc könntest du ja auch imgWidth und imgHeight an die Funktion übergeben und in den open Befehl einauen...

            Kommentar


            • #7
              Zitat von nikosch77
              naja, genau wie imgSrc könntest du ja auch imgWidth und imgHeight an die Funktion übergeben und in den open Befehl einauen...
              Dazu müsste ich aber doch erstmal die Breite und Höhe des jeweiligen Bildes ermitteln! So rufe ich das ganze nur 1x ab.

              Kommentar

              Lädt...
              X