Marco: Pop-UpFenster verzögert öffen über JS onclick=

Hallo Leute,

habe ein kleines Problem und nach 12 Std. probieren und lesen, habe ich immer noch keine Lösung ich hoffe Ihr könnt mir helfen.

Zum Problem:

In einem PHP Dokument wird durch betätigen eines Submit-Buttons der Wert/Inhalt einer Textbox (beliebige HTML-Adresse eines Bildes) in eine Variable geschrieben.  Gleichzeitig wird durch den Befehl onclick= ein JavaScript aufgerufen das ein PopupFenster öffnet in dem das Bild von der HTML-Adresse aus der Variable geladen wird.

Das Problem ist jetzt das ich nur ein "blank" PopupFenster bekomme, wenn ich dann erneut auf den Button klicke dann klappt es, da dann die HTML-Adresse ja schon in der Variable steht.
Wenn ich mit Mouseout= arbeite und 1-2sec auf dem Button noch verweile klappt es wunderbar.

Ich habe schon diverse Versuche mit onmove= onmouseout= dblclick= ,....usw ausprobiert des weiteren habe ich versucht mit setinterval und auch mit set timeout. Habe auch Extra die Abarbeitungsreihenfolge im Quelltext beachtet.

Hier ein Teil des Quellcodes:

<head>
 <?php
   $imagelink=$_GET["imagelink"];
 ?>

<script type="text/javascript">
   <!--
     function PopupFenster() {
       F = window.open("<?php echo "$imagelink" ?>","Popup",
           "width=450,height=337"); }
   // -->
 </script>
</head>

<body>
 <input type="text" name="imagelink" value="<?php echo $imagelink ?>"
    maxlength="150" size="59">
 <input type="submit" name="test" value="Test"
    onclick="javascript:PopupFenster()">
</body>

Wer es mal ausprobieren/anschauen möchte:
http://www.vision-vw.de/carlisteanmeldung.php

Hoffe jemand hat noch ne Lösung oder ne Super Alternative.

Ich möchte halt dem User die Möglichkeit geben zu kontrollieren ob
die HTML-Adresse richtig ist bevor die Daten in die Datenbank geschrieben werden.

Danke schonmal für Eure Hilfe

Mit freundlichen Grüßen

Marco

Admin von Vision-VW.de

  1. Moin,

    In einem PHP Dokument wird durch betätigen eines Submit-Buttons der Wert/Inhalt einer Textbox (beliebige HTML-Adresse eines Bildes) in eine Variable geschrieben.  Gleichzeitig wird durch den Befehl onclick= ein JavaScript aufgerufen das ein PopupFenster öffnet in dem das Bild von der HTML-Adresse aus der Variable geladen wird.

    Naja, wie soll denn das funktionieren?
    In dem Moment, wo Du Dein Formular abschickst, steht in Deiner Funktion, die das Popup öffnet, ja auch noch keine Adresse drin, kann ja nicht.

    Du vergisst, dass PHP ausgeführt wird, BEVOR die Seite angezeigt wird, und demnach auch BEVOR der Benutzer irgendwas eingeben kann.
    Dann öffnest Du mit JavaScript ein Fenster, während parallel das Formular neu geladen und die URL ingetragen wird. So kann das nicht gehen.

    Du musst im Moment des Abschickens die URL für das neue Fenster mit JavaScript aus dem Eingabefeld holen und als Parameter an window.open() übergeben. Mit PHP hat das Problem rein gar nichts zu tun.

    Gruß,
    -Efchen

    1. @ Efchen

      Du musst im Moment des Abschickens die URL für das neue Fenster mit JavaScript aus dem Eingabefeld holen und als Parameter an window.open() übergeben. Mit PHP hat das Problem rein gar nichts zu tun.

      Das Tu ich ja im moment des submit wird der Wert des eingabefensters in eine Variable geschrieben und das Javascricpt greift auf diese zu.

      Wie sonst kann ich den Inhalt einer Textbox ohne submit auslesen ???

      @ Tom

      Für den fall, dass JavaScript nicht eingeschaltet ist. Dann sollte das Form ja schließlich ein ganz normales Fenster öffnen mit der Ressource.

      Habe mir deswegen schon gedanken gemacht und würde ja js ganz vermeiden.
      Habe auch inzwischen einen Aufbau auf PHP bassierend, dort ist nur zum schluß jetzt mein problem das ich nach einer kontrollabfrage ob der Wert $imagelink gesetzt ist oder nicht entweder einen Alert hätte der dem User mitteilt er soll noch mal auf Test klicken oder dann ein neues Fenster öffnet indem das Bild angzeigt wird.

      so aller Art: open.window.neu (imagelink)
      Da habe ich nur noch keine ordenliche Info gefunden.
      Und es wäre ja schon wieder jave.

      @ ALL

      Gibt es keine Möglichkeit per php oder html ein neues Fenster zuöffnen also : <a href="Imagelink" target="_blank">Zum Bild</a>
      Nur das sich sofort das Fenster öffnet und nicht erst ich auf Zum Bild klicken muß.

      Gruß
      Marco

      Für alle die sichs mal ansehen wollen

      http://www.vision-vw.de/carlisteamledung.php  per JS mit 2 auf Test klicken

      http://www.vision-vw.de/carlisteanmledung1.php per PHP nach klick auf Test entweder Error oder Bildlink( wenn vorher eingetragen wurde

      1. Moin,

        Das Tu ich ja

        Nein. Du vermischst eine clientseitige Sprache mit einer serverseitigen Sprache und vergisst dabei, dass diese nicht auf der gleichen Ebene ablaufen.

        im moment des submit wird der Wert des eingabefensters in eine Variable geschrieben und das Javascricpt greift auf diese zu.

        Nein. Beim Submit wird zunächst Deine Funktion zum Öffnen eines neuen Fensters aufgerufen über den Event-Handler onClick. Zu dem Zeitpunkt befindet sich noch KEINE URL in Deiner JavaScript-Funktion, deswegen wird das Fenster leer geöffnet.
        Dann wird der Submit ausgeführt. Jetzt wird ein Parameter an das PHP-Script übergeben, das den Wert in eine Variable schreibt.
        Das PHP-Script erzeugt nun eine neue HTML-Seite, in der in Deinem JavaScript-Code die vorher im Eingabefeld eingegebene URL in die Funktion für window.open geschrieben wird.
        Dann wird die Seite vom Server an Deinen Browser geschickt und angezeigt. Das leere Popup-Fenster bleibt die ganze Zeit über sichtbar.
        Dein Browser zeigt die Seite an und  - fertig. Sonst passiert nichts.

        Erst wenn JETZT nochmal auf Submit geklickt wird, erscheint die URL im Popup.

        Wie sonst kann ich den Inhalt einer Textbox ohne submit auslesen ???

        Natürlich nur mit JavaScript!

        Gibt es keine Möglichkeit per php oder html ein neues Fenster zuöffnen also : <a href="Imagelink" target="_blank">Zum Bild</a>
        Nur das sich sofort das Fenster öffnet und nicht erst ich auf Zum Bild klicken muß.

        Wie? Was?

        1. PHP kann keine neuen Fenster öffnen. PHP läuft nämlich nur serverseitig ab und PHPs einzige Aufgabe ist es, eine HTML-Seite zu erzeugen, die dann im Browser angezeigt wird. Der Browser weiß dann nichts mehr von PHP.
          Wie Du ein neues Fenster nur per HTML öffnest, hast Du oben beschrieben, von alleine öffnet sich da aber nichts, da muss man natürlich drauf klicken. HTML ist nicht dynamisch, sowas kannst Du nur mit JavaScript erreichen.

        Gruß,
        -Efchen

  2. Hello,

    Hier ein Teil des Quellcodes:
      <?php

    $imagelink=trim($_POST["imagelink"]);
       ?>

    <html>
      <head>
       <script type="text/javascript">
         <!--
           function PopupFenster(imagelink)
           {
             F = window.open(imagelink,"Popup",
                 "width=450,height=337");
             F.focus();
             return false;
           }
         // -->
       </script>
      </head>

    <body>

    <form name="form1"
             action="<?php echo $_SERVER['PHP_SELF']; ?>"
             method="post"
             enctype="multipart/form-data" target="Popup">

    <input type="text"
                 name="imagelink"
                 value="<?php echo $imagelink ?>"
                 maxlength="150" size="59">
          <input type="submit"
                 name="test"
                 value="Test"
                 onclick="return PopupFenster(this.form.imagelink.value)">

    <?php if(strlen($imagelink)>0)
                {
                  echo "<script type="text/javascript">\n".
                       "<!--\n".
                       "  PopupFenster($imagelink);\n".
                       "// -->\n".
                       "</script>\n";
                }
           ?>
       </form>
      </body>
      </html>

    http://www.vision-vw.de/carlisteanmeldung.php

    Probier es mal so.
    Allerdings musst Du das noch fertig durchdenken, für den fall, dass JavaScript nicht eingeschaltet ist. Dann sollte das Form ja schließlich ein ganz normales Fenster öffnen mit der Ressource.

    Solange JavaScript läuft, wird der Post übnerhaupt nicht abgeschickt.

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

    Tom

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

      Unterscheidet sich ja im Grunde nicht so ganz von meinem Vorschlag, außer dass Du ihm die Arbeit abgenommen hast, und er nicht kapiert, warum es so ist und die Frage dann irgendwann wieder kommt :-)

      Gruß,
      -Efchen

      1. Hello Efchen,

        Unterscheidet sich ja im Grunde nicht so ganz von meinem Vorschlag, außer dass Du ihm die Arbeit abgenommen hast, und er nicht kapiert, warum es so ist und die Frage dann irgendwann wieder kommt :-

        Da Marco schlau genug war, den für uns relevanten Code aus dem Script auszuschneiden, wird er sich auch mit der halben Lösung von mir beschäftigen und die zu einer ganzen umbauen.

        Dazu könnte er sich wieder meine berühmten Zettelchen malen, auf denen der Zustand des Screens nebst relevanten Funktionen zu jedem Zeitpunkt dargestellt wird. Dazwischen legt er die dann für den Server und kann so wunderbar Übersicht gewinnen über den zeitlichen Ablauf.

        Da war doch die letzten Tage ein interessanter kurzer Thread... Nur, wenn weil sich seine Problöeme strukturiert und ausformuliert, kommt man oft schon auf die Lösung.

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

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau