Michael: Neues Fenster über Javascript innerhalb PHP

Hallo,

Ich möchte beim Anklicken eines Thumbnails unserer Fotogalerie das Bild in einem neuen Fenster Originalgrösse anzeigen.

Leider funktioniert beim Anklicken der jeweiligen Grafik das zugehörige Javascript zur Anzeige des Thumbnails in Originalgrösse nicht.

Hier der Javascript-Codes, der im <head>-Bereich definiert und über PHP aufgerufen wird:

function PopUp (URL, BildBreite, BildHoehe)
{
  if (document.all)
  {
    var BildschirmBreite = screen.width;
    var BildschirmHoehe  = screen.height;
  }
  else
  {
    if (document.layers)
    {
      var BildschirmBreite = window.outerWidth;
      var BildschirmHoehe  = window.outerHeight;
    }
  }

var PositionWaagrecht = (BildschirmBreite - BildBreite) / 2;
  var PositionSenkrecht = (BildschirmHoehe  - Bildhoehe) / 2;

var Datum = new Date();
  var ID    = Datum.getTime();

eval ("BildPopUp" + ID + " = window.open (URL, '" + ID + "', 'width = '" + BildBreite + "', height = '" + BildHoehe + "', screenX = '" + PositionWaagrecht + "', screenY = '" + PositionSenkrecht + "', directories = no, location = no, menubar = no, resizable = no, scrollbars = no, status = no, toolbar = no, titlebar = no, alwaysRaised = yes');");
}

Der Aufruf erfolgt über einen echo-Befehl innerhalb einer PHP-Anweisung:

<a href='javascript:PopUp ("" . $Bilder [$i] . "", $BildBreite, $BildHoehe)'><img border='0' src='" . $Bilder [$i] . "'</a>

Fragt mich bitte nicht, warum ich die Javascript-Anweisung evtl. so kompliziert (oder seltsam) maskiert eingebunden habe, aber ich habe mich hierbei an der Ausgabe in der Statuszeile des Browserfensters gerichtet.

Für Verbesserungen bin ich selbstverständlich jederzeit offen, man will ja schliesslich auch was dazulernen...

Wenn ich nun auf einen Thumb klicke, dann wird mir die Fehlermeldung angezeigt, dass die Variable "BildHoehe" undefiniert ist. Bezüglich der Variable "BildBreite" meckert der Browser (Slimbrowser) hingegen nicht.

Angaben im PHP-Teil | Entsprechung in Javascript-Funktion
--------------------+------------------------------------
$Bilder [$i]        | URL
$BildBreite         | BildBreite
$BildHoehe          | BildHoehe

Die PHP-Variablen bekomme ich über folgende Definitionen:

$BildGroesse = getimagesize ($Bilder [$i]);
$BildBreite  = $BildGroesse [0];
$BildHoehe   = $BildGroesse [1];

Ich hoffe, Ihr könnt mir beim letzten Schritt vor der Vollendung meiner Fotogalerie behilflich sein.

Gruss, Michael

  1. Hi,

    Der Aufruf erfolgt über einen echo-Befehl innerhalb einer PHP-Anweisung:

    Du hast ein browserseitiges Problem. Also ist serverseitiger Code irrelevant.
    Was kommt beim Browser als Code an?
    Nur das ist relevant.

    cu,
    Andreas

    --
    MudGuard? Siehe http://www.Mud-Guard.de/
    Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
    1. Hi Andreas,

      wenn ich der Statuszeile des Browsers Glauben schenken darf, dann wird javascript:PopUp("Name_des_Bildes.png", 70, 56) an den Browser geschickt, was ja auch passen sollte.

      Michael

      1. Hi,

        wenn ich der Statuszeile des Browsers Glauben schenken darf, dann wird javascript:PopUp("Name_des_Bildes.png", 70, 56) an den Browser geschickt, was ja auch passen sollte.

        Wie wärs, wenn Du in den Quelltext guckst?

        cu,
        Andreas

        --
        MudGuard? Siehe http://www.Mud-Guard.de/
        Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
        1. Hi Andreas,

          Hab ich gemacht...

          Und da passt die korrekte Fütterung der Parameter für die PopUp-Funktion *stirn-kratz*

          Michael

  2. Hello,

    Du musst Dein JavaScript nue einen Response früher ausliefern und installieren, und nicht erst in dem Moment, wo es aufgerufen werden soll.

    Also:
    1. Thumbs inclusive JavaScript an den Client ausliefern
    2. JavaScript in dem entsprechenden Form action oder im Link aufrufen und das
       PHP-Script zur Anzeioge des großen Bildes ausführen lassen.

    DU weißt doch vorher, wie der User reagieren darf.

    Harzliche Grüße aus http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
    1. Hi Tom,

      Jut, ääähm,... Danke für Deine Antwort...

      Wie soll das denn aussehen, wenn mir diese Frage gestattet sei ?   ;-)

      Michael

      1. Hello,

        Jut, ääähm,... Danke für Deine Antwort...

        Wie soll das denn aussehen, wenn mir diese Frage gestattet sei ?   ;-)

        Wann baust Du denn die Links für das große Bild mittels PHP auf?
        In diesem Moment muss auch das JavaScript ausgeliefert werden und der passende Link für die Großbildanzeige:

        <a href="grossbild.jpg"
             target="grossbild"
             alt="grossbild"
             onClick="show_grossbild(this.location.href); return false;"><img .../></a>

        So stell ich mir das jedenfalls vor...

        Harzliche Grüße aus http://www.annerschbarrich.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau
  3. Hallo Michael,

    Wenn ich nun auf einen Thumb klicke, dann wird mir die Fehlermeldung angezeigt, dass die Variable "BildHoehe" undefiniert ist. Bezüglich der Variable "BildBreite" meckert der Browser (Slimbrowser) hingegen nicht.

    dann lass Dir doch mal

    a) in PHP via echo ausgeben, wie $Bildhoehe definiert ist
    und
    b) via js (z.B. alert(BildHoehe); ) ausgeben, wie´s dann ankommt.

    c) wenn das keine Erleuchtung bringt, dann gehe die anderen Variablen durch und sieh Dir den generierten Source mal genau an. Ich kann Dir für´s js-Debugging einen Mozilla empfehlen, da dieser über eine recht aussagekräftige Javascript-Console verfügt.

    Desweiteren würde ich den Aufruf der js-Function als onclick-Event setzen... ich vermute mal, daß mit dem Aufruf via href-Attribut nicht alle Browser klarkommen werden... in etwa so:

    <a href='javascript:void(0);' onclick='PopUp("" . $Bilder [$i] . "", $BildBreite, $BildHoehe);'><img border='0' src='" . $Bilder [$i] . "'</a>

    Gruß,
    Stefan

    1. Hi Stefan,

      <a href='javascript:void(0);' onclick='PopUp("" . $Bilder [$i] . "", $BildBreite, $BildHoehe);'><img border='0' src='" . $Bilder [$i] . "'</a>

      ^^^^^^^^^^^^^^^^^^
      Das meinst du aber nicht wirklich ernst, oder?

      Kurt

      --
      Nein, ich beantworte keine Anfragen per e-mail.
      ss:( zu:) ls:[ fo:) de:] va:| ch:| sh:( n4:° rl:( br:? js:| ie:% fl:( mo:?
      "Schweigen ist ein Argument, das kaum zu widerlegen ist."  (Heinrich Boell; dt. Schriftsteller u. Nobelpreistraeger; 1917-1985)
      http://elektro-dunzinger.at
      http://shop.elektro-dunzinger.at
  4. Hallo,

    Hier der Javascript-Codes, der im <head>-Bereich definiert und über PHP aufgerufen wird:

    In der Parameterliste nennst du den dritten Parameter »BildHoehe«:

    function PopUp (URL, BildBreite, BildHoehe)
    ...

    Du benutzt dann eine Variable mit dem Namen »Bildhoehe«:

    var PositionSenkrecht = (BildschirmHoehe  - Bildhoehe) / 2;

    Wenn ich nun auf einen Thumb klicke, dann wird mir die Fehlermeldung angezeigt, dass die Variable "BildHoehe" undefiniert ist.

    Nein. Es wird angezeigt, dass die Variable »Bildhoehe« nicht definiert ist. BildHoehe ist definiert, Bildhoehe nicht. Dort ist ein Schreibfehler. Bei JavaScript-Variablennamen ist (genau wie in PHP) die Groß- und Kleinschreibung wichtig. »BildHoehe« ist eine andere Variable als »Bildhoehe«.

    Mathias