Stefan Hamann: OnSubmit Problem Mozilla

Hallo,

habe mir ein kleines Upload-Script gebastelt, welches nachdem der Upload gestartet wurde, ein animiertes Gif (Pseudo-Progressbar) anzeigen soll.

Zu diesem Zweck habe ich im Dokument ein IFrame integriert, dessen SRC eigenschaft ich vor dem Upload (OnSubmit) entsprechend anpasse. Das ganze funktioniert unter IE auch absolut problemlos.

onSubmit="javascript:parent.document.getElementById('picframe').src='bild.php?transfer=1'"

Unter Mozilla (1.7) wird der OnSubmit Code anscheinend garnicht ausgeführt, sondern direkt der eigentliche Submit gestartet.

Der Code an solches funktioniert in einem Extra Button (Dann OnClick-Event) absolut problemlos unter Mozilla, ist also syntaktisch in Ordnung.

Wie bewege ich Mozilla zum Ausführen des Befehls VOR dem Submit?

Danke.

MfG,

S. Hamann

  1. Hallo,

    Der Code an solches funktioniert in einem Extra Button (Dann OnClick-Event) absolut problemlos unter Mozilla, ist also syntaktisch in Ordnung.

    Dann weise den Aufruf doch gleich dem onclick-Eventhandler des Submit-Buttons zu.

    BTW: Syntaktisch ist nicht alles in Ordnung, da "javascript:" in Event-Handlern nichts zu suchen hat.

    MfG, Thomas

    1. habe ich probiert, war mein erster Versuch. Hat auch nicht funktioniert :(

      Das mit dem "javascript:" stimmt, das gehört nur in <a hrefs z.B. oder? Aber daran wird es nicht liegen,...

      Dann weise den Aufruf doch gleich dem onclick-Eventhandler des Submit-Buttons zu.

      BTW: Syntaktisch ist nicht alles in Ordnung, da "javascript:" in Event-Handlern nichts zu suchen hat.

      1. Hallo,

        habe ich probiert, war mein erster Versuch. Hat auch nicht funktioniert :(

        Dann vielleicht mit

        <input type="button" value="Dein Text" onclick="dievorgelagerteframeaktion();this.form.submit()">

        Diesen Button im Formular zunaechst mit display: none; belegen und per Script sichtbar machen und den Standard-Submit-Button beim Vorhandensein von JS entsprechend ausblenden ...

        MfG, Thomas

        1. Habe es jetzt einfach mal so probiert, was ja auch funktionieren müsste. Aber gleicher Effekt, Form wird abgeschickt ohne das IFrame zu aktualisieren. Kann es sein, das Mozilla sobald ein Submit ins Spiel kommt alle vorgelagerten (oder nachgelagerten) Javascript-Events abbricht ? Kommt mir ganz so vor, also müsste man vor aufruf von form.submit() einen Sleep einbauen von vielleicht 200ms oder so. Wie mache ich das?

          Danke.

          <form action="<? $PHP_SELF."?artikel=$artikel";?>" method="post" enctype="multipart/form-data" name="form1" >

          <input name="file[]" type="file" class="inputdynwidth" id="file[]">

          <input type="button" name="Submit" value="Senden" onClick="javascript:parent.document.getElementById('picframe').src='bild.php?transfer=1';this.form.submit()">

          </form>

          1. <form action="<? $PHP_SELF."?artikel=$artikel";?>" method="post" enctype="multipart/form-data" name="form1" >

            <input name="file[]" type="file" class="inputdynwidth" id="file[]">

            <input type="button" name="Submit" value="Senden" onClick="javascript:parent.document.getElementById('picframe').src='bild.php?transfer=1';this.form.submit()">

            </form>

            Bevor du irgendwelche Hiflskonstrukte baust, mach doch mal einen Check ein, ob überhaupt das passiert was du denkst:

            <input type="submit" value="Senden"
            onClick="obj = parent.document.getElementById('picframe'); alert(obj); obj.src='bild.php?transfer=1';">

            Struppi.

            1. Jo, habe ich probiert.
              Da passiert auch was. Ne Messagebox geht auf, und gibt mir als Objektbeschreibung "Object HTMLIFrameElement" zurück...
              Aber die SRC-Eigenschaft wird a) nicht gesetzt oder b) nicht mehr bearbeitet...

              1. Hallo Stefan

                Jo, habe ich probiert.
                Da passiert auch was. Ne Messagebox geht auf, und gibt mir als Objektbeschreibung "Object HTMLIFrameElement" zurück...
                Aber die SRC-Eigenschaft wird a) nicht gesetzt oder b) nicht mehr bearbeitet...

                Kann es sein, dass man beim iFrame, wie bei einem normalen Frame nicht src ändert, sondern über loaction.href den Inhalt ändert?

                Struppi.

                1. Hi Struppi,

                  ne das geht schon über die .SRC Eigenschaft, wenn ich das ganze unabhängig vom Submit, direkt in den onClick Event eines beliebigen Buttons packe, funktionierts ja auch ;)

                  Also ich schätze ich muss da eine Zeitverzögerung einbauen, zwischen dem "Redirect" und dem Submit... da Mozilla anscheinend nach einem Submit, alles "stehen und liegen lässt" und sich darauf "konzentriert"...
                  Wie baue ich da so eine Verzögerung ein?

                2. Moin!

                  Kann es sein, dass man beim iFrame, wie bei einem normalen Frame nicht src ändert, sondern über loaction.href den Inhalt ändert?

                  Ja, das ist die übliche Vorgehensweise. Ein IFrame ist ein ganz normales (Frame-)Fenster.

                  - Sven Rautenberg

      2. hi,

        Das mit dem "javascript:" stimmt, das gehört nur in <a hrefs z.B. oder?

        nein, auch da gehört es nicht rein.

        href sollte man nicht zum aufrufen von javascript-funktionen nutzen - nutze onClick stattdessen.
        und wenn es keine link-alternative für nutzer ohne JS gibt - dann nutze auch gar nicht erst einen <a>, sondern onClick auf einem anderen html-element.

        gruß,
        wahsaga

        --
        I'll try being nicer if you'll try being smarter.