Matthias: Probleme mit IE 6 und form mit Popup

Hi,

ich hatte vor kurzem das Problem eine Formularanfrage über ein Popup zu verarbeiten. Mit folgendem Ausdruck hat es dann funktioniert.

<form id="form1" name="form1" method="post" action="do.php"
 onSubmit=openWindow("","testbox","300","200","no"); target="testbox">

openWindow ist eine selbstgeschriebene Funktion die ein PopupFenster öffnet. Nun habe ich allerdings das Problem das der IE 6 (als einziger Browser), diese Anfrage nicht richtig bearbeitet. Er öffnet ein leeres Popup und arbeitet in einem neuen Fenster dann dei do.php ab. Hat damit jemand schon mal Erfahrungen gemacht?

Grüsse
Matthias

  1. hi,

    <form id="form1" name="form1" method="post" action="do.php"
    onSubmit=openWindow("","testbox","300","200","no"); target="testbox">

    openWindow ist eine selbstgeschriebene Funktion die ein PopupFenster öffnet. Nun habe ich allerdings das Problem das der IE 6 (als einziger Browser), diese Anfrage nicht richtig bearbeitet. Er öffnet ein leeres Popup und arbeitet in einem neuen Fenster dann dei do.php ab.

    Dann bekommt er das Öffnen des Popups vermutlich nicht schnell genug auf die Reihe - so dass beim Abschicken des Formulars noch kein Fenster mit dem als target angegebenen Namen verfügbar ist.

    Den normalen Submit zu unterbinden (return false aus dem Eventhandler heraus), und dann leicht zeitverzögert (setTimeout) die submit-Methode des Formulars aufzurufen, könnte helfen.
    Allerdings will das wohldurchdacht sein - denn bei einem Fehler im Javascript oder dessen Ausführung könnte u.U. das Abschicken damit komplett verhindert werden.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Den normalen Submit zu unterbinden (return false aus dem Eventhandler heraus), und dann leicht zeitverzögert (setTimeout) die submit-Methode des Formulars aufzurufen, könnte helfen.
      Allerdings will das wohldurchdacht sein - denn bei einem Fehler im Javascript oder dessen Ausführung könnte u.U. das Abschicken damit komplett verhindert werden.

      Sry aber das versteh ich nicht ganz. so meinst du das wahrscheinlich nicht oder:

      <form id="form1" name="form1" method="post" action="do.php"
       onSubmit="openWindow("","testbox","300","200","no"); settimeout(50); return false" target="testbox">

      Danke für die Hilfe

      Grüsse
      Matthias

      1. hi,

        Sry aber das versteh ich nicht ganz. so meinst du das wahrscheinlich nicht oder:

        <form id="form1" name="form1" method="post" action="do.php"
        onSubmit="openWindow("","testbox","300","200","no"); settimeout(50); return false" target="testbox">

        Nein.

        _Wenigstens_ wie setTimeout funktioniert mal selber nachzuschlagen, darf man doch wohl von dir erwarten?

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. hi,

          Sry aber das versteh ich nicht ganz. so meinst du das wahrscheinlich nicht oder:

          <form id="form1" name="form1" method="post" action="do.php"
          onSubmit="openWindow("","testbox","300","200","no"); settimeout(50); return false" target="testbox">

          Nein.

          _Wenigstens_ wie setTimeout funktioniert mal selber nachzuschlagen, darf man doch wohl von dir erwarten?

          gruß,
          wahsaga

          Sry wahsaga, aber ich versteh echt gar nix, wie kann das im Firefox problemlos funken und im IE 6 nicht, und vorallem warum wird ein nächster Prozess gestartet "aktion=.." wenn die open.Window noch nicht mal durchgelaufen ist.

          Grüsse
          Matthias

          1. hi,

            Sry wahsaga, aber ich versteh echt gar nix,

            Ja, den Eindruck bekommt man.
            Möchtest du nicht vielleicht erst mal mit Techniken arbeiten, die du schon halbwegs verstanden hast?

            wie kann das im Firefox problemlos funken und im IE 6 nicht,

            Wie kann deine Mama nicht kochen, und die von Ottfried schon - sind doch beides Menschen ...?

            Ja, aber verschiedene. Und FF und IE sind zwei verschiedene Browser.

            und vorallem warum wird ein nächster Prozess gestartet "aktion=.." wenn die open.Window noch nicht mal durchgelaufen ist.

            "Prozesse" sind überhaupt keine im Spiel.
            Das Betätigen eines Submitbuttons schickt ein Formular ab.
            Per onsubmit bekommst du vorher noch die Möglichkeit, mit Javascript drauf zu reagieren.
            Da kannst du bspw. dem Browser die Anweisung geben, ein Popup zu öffnen. Diese Anweisung hat der Browser verstanden, und an die entsprechenden Unterroutinen des GUI, die mit Javascript nichts mehr zu tun haben, weitergegeben - mehr kommt im Javascript nicht, also schickt er jetzt die Formulardaten auf die Reise. Das eigentliche Öffnen des Popups ist aber eine tief im Browser liegende Funktionalität (oder sogar im OS) - und wenn das nicht schnell genug geht, dann geht es nun mal nicht schnell genug. Deshalb mein Vorschlag, ein bisschen drauf zu warten, um dann vielleicht mehr Erfolg zu haben.

            gruß,
            wahsaga

            --
            /voodoo.css:
            #GeorgeWBush { position:absolute; bottom:-6ft; }
      2. Hi,

        Sry aber das versteh ich nicht ganz. so meinst du das wahrscheinlich nicht oder:

        Nö, sicher nicht.

        <form id="form1" name="form1" method="post" action="do.php"
        onSubmit="openWindow("","testbox","300","200","no"); settimeout(50); return false" target="testbox">

        Denn
        openWindow(
        ist kein sinnvolles Javascript. Mehr steht ja im onsubmit nicht drin ...

        cu,
        Andreas

        --
        Warum nennt sich Andreas hier MudGuard?
        Schreinerei Waechter
        O o ostern ...
        Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.