Frank Spade: Mit confirm() steuern ob Seite verlassen wird

Guten Tag,

Ich möchte mit confirm() einen Hinweis geben, dass ein Formular erst abgeschickt werden muss bevor die Seite verlassen wird und fragen, ob der Benutzer wirklich die Seite verlassen will oder zum Formular zurückkehren möchte. confirm() wird mit onbeforeunload aktiviert aber ich erkenne nicht, wie ich abhängig vom Returnwert von confirm() auf der Seite bleiben kann oder nicht.

if (confirm('Sie sollten das Formular abschicken bevor Sie die Seite verlassen!\n\nZurück zum Formular mit OK die Seite verlassen mit CANCEL ...')) { //und was dann? };

Gruß

Frank

  1. hi,

    confirm() wird mit onbeforeunload aktiviert aber ich erkenne nicht, wie ich abhängig vom Returnwert von confirm() auf der Seite bleiben kann oder nicht.

    Die Default-Aktion, die ein Event nach sich ziehen würde, unterbindet man dadurch, dass man aus dem Eventhandling heraus false zurückgibt.

    gruß,
    wahsaga

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

    if (confirm('Sie sollten das Formular abschicken bevor Sie die Seite verlassen!\n\nZurück zum Formular mit OK die Seite verlassen mit CANCEL ...')) { //und was dann? };

    Nein. onBeforeUnload funktioniert genau anders herum:

      
    window.onbeforeunload = function(){  
     return "Sie sollten das Formular abschicken bevor Sie die Seite verlassen!\n\nWollen Sie die Seite wirklich verlassen?";  
    }
    

    Confirm brauchst du nicht - der wird vom Browser erstellt.

    mfg. Daniel

    1. Danke Daniel!

      window.onbeforeunload = function(){
      return "Sie sollten das Formular abschicken bevor Sie die Seite verlassen!\n\nWollen Sie die Seite wirklich verlassen?";
      }

      Das sieht sieht schon sehr interessant aus, aber ich bringe es nicht zum Laufen. Ich habs ins BODY-Tag eingefügt:  
      <body window.onbeforeunload = function(){return "Sie ... verlassen?";}  
      bekomme aber weder eine Confirmbox noch einen Skriptfehler.  
        
      Kann mir jemand bitte auf die Sprünge helfen?  
        
      Herzlichen Gruß  
        
      Frank
      
      1. Hi

        <body window.onbeforeunload = function(){return "Sie ... verlassen?";}

        Du schreibst JavaScript-Code, wo HTML hingehört

        bekomme aber weder eine Confirmbox noch einen Skriptfehler.

        Ja, weil da kein Skriptparser arbeitet
        <body onbeforeunload='return "Sie ... verlassen?'>
        Wobei ich mir über das on*before*unload nicht ganz sicher bin...

        mfg
        Genie

        1. Selbst wenn ich mich an die Vorgabe von Micrsoft halte geht es nicht:
          http://msdn.microsoft.com/workshop/author/dhtml/reference/events/onbeforeunload.asp

          Da habe ich wohl etwas noch nicht verstanden ...

          1. Selbst wenn ich mich an die Vorgabe von Micrsoft halte geht es nicht:
            http://msdn.microsoft.com/workshop/author/dhtml/reference/events/onbeforeunload.asp

            Da habe ich wohl etwas noch nicht verstanden ...

            Jetzt weiß ich, es geht nur mit dem Internet Explorer.

            Gibt es eine Lösung, die auch mit anderen Browsern funktioniert?

            1. Hallo,

              Da habe ich wohl etwas noch nicht verstanden ...
              Jetzt weiß ich, es geht nur mit dem Internet Explorer.

              Nö. Firefox kennt diesen Event-Hander auch. Opera hingegen nicht. Ob die KHTML-Kollegen damit klar kommen, kann ich im Moment nicht testen :-(

              Aber welchen Schaden hat ein Nutzer eines Browsers, der diesen Event-Handler nicht unterstützt und bei diesem somit keine Meldung kommt?

              mfg. Daniel

              1. Danke Daniel,

                Nö. Firefox kennt diesen Event-Hander auch. Opera hingegen nicht. Ob die KHTML-Kollegen damit klar kommen, kann ich im Moment nicht testen :-(

                Das Beispiel von Microsoft funktioniert bei mir nicht unter Firefox http://msdn.microsoft.com/workshop/author/dhtml/reference/events/onbeforeunload.asp

                Aber welchen Schaden hat ein Nutzer eines Browsers, der diesen Event-Handler nicht unterstützt und bei diesem somit keine Meldung kommt?

                Das ist schwer abzuschätzen und kommt auf den Einzelfall drauf an. Ich möchte jedoch keine Lösung schaffen, von der ich weiss, dass eine große Zahl der Besucher keinen Nutzen davon hat.

                Mir ist es nicht wichtig diesen Event-Handler zu benutzen, wenn sich das Ergebnis auch auf andere Weise erzielen läßt.

                Herzlichen Gruß und danke für die Unterstützung,

                Frank

                1. Hallo,

                  Nö. Firefox kennt diesen Event-Hander auch. Opera hingegen nicht. Ob die KHTML-Kollegen damit klar kommen, kann ich im Moment nicht testen :-(
                  Das Beispiel von Microsoft funktioniert bei mir nicht unter Firefox http://msdn.microsoft.com/workshop/author/dhtml/reference/events/onbeforeunload.asp

                  Meins schon.

                  Mir ist es nicht wichtig diesen Event-Handler zu benutzen, wenn sich das Ergebnis auch auf andere Weise erzielen läßt.

                  Es lässt sich AFAIK aber nicht auf andere Weise erzielen. Der unload-Handler tritt erst in Aktion, nachdem die Seite bereits aus dem Speicher geworfen wurde :-(

                  mfg. Daniel

      2. Hallo,

        window.onbeforeunload = function(){
        return "Sie sollten das Formular abschicken bevor Sie die Seite verlassen!\n\nWollen Sie die Seite wirklich verlassen?";
        }

        
        > Das sieht sieht schon sehr interessant aus, aber ich bringe es nicht zum Laufen. Ich habs ins BODY-Tag eingefügt:  
        > <body window.onbeforeunload = function(){return "Sie ... verlassen?";}  
        > bekomme aber weder eine Confirmbox noch einen Skriptfehler.  
        >   
        > Kann mir jemand bitte auf die Sprünge helfen?  
          
        Du musst den Code in <script>-Bereiche packen:  
          
        <script type="text/javascript">/\*<![CDATA[\*/  
        ~~~javascript
          
        window.onbeforeunload = function(){  
         return "Sie sollten das Formular abschicken bevor Sie die Seite verlassen!\n\nWollen Sie die Seite wirklich verlassen?";  
        }
        

        /*]]>*/</script>

        JavaScript hat mMn nichts in HTML-Attributen zu suchen. Siehe SELFHTML-Weblog: Der sinnvolle Einsatz von JavaScript

        mfg. Daniel

  3. Hi,

    vielleicht einer return false; darein??

    Das geht zumindest bei anderen events so... also zB ein return false beim onsubmit bewirkt, dass die Form nicht abgeschickt wird.

    onbeforeunload sieht auch sehr nach einem Microsoft event aus.

    Aber ich glaube auch kaum, dass man mit Javascript verhindern kann, dass der Anwender sein Fenster schließt.

    sonst würde so was bewirken, dass man nie sein fenster schließen kann...:

    window.onunload = function(){return false;};

    Gruß
    Christian