Dennis: HTML/Formular: Fallunterscheidung - aber wie?

Hallo!

ich habe ein Problem, auf meiner Homepage ist unter anderem ein PopUp, welches sich (window.open) öffnet, wenn man einen Button klickt.
In diesem Fenster befindet sich dann ein Link/Button. Wenn der Besucher auf diesen Link klickt, wird das Fenster geschlossen (es ist ein Fenster ohne Menübar etc.) und ein neues Fenster wird mit einer bestimmten Größe geöffnet.
Soweit klappt auch alles. Jetzt ist es mir wichtig, dass der Besucher für eine Absenden unbedingt auf diesen Link klickt!
Mit anderen Worten, falls der Besucher die Seite schließen will (über X in der Menüleiste) soll mit alert eine Meldung kommen, wo ich Ihn bitte, noch einmal auf den Link zu klicken. Klickt der Besucher aber auf den Link, so soll diese Meldugn NICHT kommen.
Ich brauch also eine Fallunterscheidung. Aber wie muss ich das machen? was muss ich da eingeben?

MfG, Dennis.

--
Auf Signaturen hab ich keinen Bock!!
  1. Hallo,

    binde in das Fenster im body tag einen onUnload-EventHandler ein.
    Dort kannst Du dann entsprechend reagieren. Wie du genau verhindern kannst, daß das Fenster dann tatsächlich geschlossen wird, ist mir nicht bekannt. Evtl. sollte ein "return false;" ausreichen.
    Falls nicht, kannst Du ja das selbe Fensternocheinmal öffnen lassen.

    Beim manuellen Schließen kannst Du ja beim Klick auf den Link eine Variable setzten, die Du dann im "onUnload"-Handler abfrägst.

    Fraglich finde ich allerdings ob das mit dem Blockieren nicht ein wenig entnervent wirkt??

    Gruß

    WebFix

    1. Hallo!

      binde in das Fenster im body tag einen onUnload-EventHandler ein.

      <body onunload="window.open('URL')"> hatte ich schon, dann wird das Fenster immer wieder geöffnet. Erste, wenn man mehrmals auf schließen klickt, schließt es sich.

      Dort kannst Du dann entsprechend reagieren. Wie du genau verhindern kannst, daß das Fenster dann tatsächlich geschlossen wird, ist mir nicht bekannt. Evtl. sollte ein "return false;" ausreichen.

      Hm, bin da jetzt nicht wirklich ein Profi, könntest du mir vielleicht mal ein kleines Beispiel geben?

      Falls nicht, kannst Du ja das selbe Fensternocheinmal öffnen lassen.
      Beim manuellen Schließen kannst Du ja beim Klick auf den Link eine Variable setzten, die Du dann im "onUnload"-Handler abfrägst.

      Hm, wie zum Beispiel? Das ist mir jetzt nicht so ganz klar geworden.

      Fraglich finde ich allerdings ob das mit dem Blockieren nicht ein wenig entnervent wirkt??

      Ne, die Besucher werden ja auch darauf hingewiesen. Und das Fenster haben die ja selber aufgerufen.

      MfG, Dennis.

      --
      Auf Signaturen hab ich keinen Bock!!
  2. Hallo,

    ich habe ein Problem, auf meiner Homepage ist unter anderem ein PopUp, welches sich (window.open) öffnet, wenn man einen Button klickt.

    Das ist aber ein Problem... ;-)

    Soweit klappt auch alles. Jetzt ist es mir wichtig, dass der Besucher für eine Absenden unbedingt auf diesen Link klickt!

    Dann schreibe ihm das hin. Ich gehe deiner Beschreibung nach davon aus, dass es ein Formular ist, und am Ende anstatt eines <input type="submit">'s ein Link steht, der das mithilfe JavaScript's tut? Dann würde ich den Eventhandler in den <form> einbauen, also <form onSubmit="retun blabla();">, wichtig hierbei ist, dass blabla() hierbei <false> zurückgibt, damit das Formular nicht abgeschickt wird.
    Du fragst dich sicherlich: Warum so umständlich? Die Lösung: Hierbei wird dann auch abgesichert, falls der Besucher anstatt auf den Link einfach auf <Enter> drückt.

    Mit anderen Worten, falls der Besucher die Seite schließen will (über X in der Menüleiste) soll mit alert eine Meldung kommen, wo ich Ihn bitte, noch einmal auf den Link zu klicken. Klickt der Besucher aber auf den Link, so soll diese Meldugn NICHT kommen.

    Du willst deinen Besucher zwingen, auf deiner Seite zu bleiben. Das ist nicht schön, muss ich ehrlich sagen. Denn wenn ich irgendwo bin und dann weg will, und der Autor mich daran hindern will, finde ich das nicht so toll. Das ist dann auch einer der vielen Gründe, warum ich dem IE gegenüber Opera bevorzuge: der IE kennt nämlich den EventHandler onUnload, der in den <body> "eingebaut" wird. Mit diesem ist das, was du dir da erwünscht möglich: Der Surfer kann die Seite nicht verlassen :-|

    Ich brauch also eine Fallunterscheidung. Aber wie muss ich das machen? was muss ich da eingeben?

    Eine "Fallunterscheidung" ist eigentlich nur so was wie

    if(argument) {
      blabla; }
    else {
      blabla; }

    oder auch ein bisschen komplexer, usw. Deinen Wunsch zu realisieren wird etwas umständlicher. Ich will dir da mal was zeigen:

    ...
    <body onUnload="stay_here();">
    <form onSubmit="return go_on();" name="meinForm">
      <input type="text" name="Name" />
      ...
      <a href="javascript:document.meinForm.submit();">Link</a>
    </form>
    </body>
    ...

    Wenn der Besucher die Webseite irgendwie verlassen zu versucht, das geht z.B. über Datei>Beenden, oder dein "X", oder über einen Klick in der Symbolleiste auf "Zurück", "home", ..., wird stay_here() aufregrufen. Diese böse Funktion warnt den unartigen Surfer, jah auf deiner Seite zu bleiben, sonst.... ;-) - ich denke mal, wenn sie "false" zurückgibt, dann wird das Fenster vielleicht nicht geschlossen, oder du machst einfach window.open(self.location), dass öffnet dann das gleiche fenster nochmal, und der Surfer muss alle Daten im Formular nochmal eingeben - zur strafe, dass er ausbrechen wollte ;-)

    Doch stay_here() lädt sich nun auch, wenn der Besucher auf den Link klickt, und das geöffnete Fenster seinen Vater schließen will. Also muss go_on() eine globale Variable, z.B. "good_end", auf <true> setzten, und stay_here() prüft mit deiner super-fallunterscheidung, ob good_end true oder false ist. Ist es false, kommt die Fehlermeldung, ansonsten: Tschüss, Besucher: Du bist frei!

    WauWau

    1. Hallo!

      Erstmal, das ist noch kein Formular. Es geht mir nur darum, dass der Besucher auf den Link klickt, mit dem er wieder zu meiner Startseite kommt, die sich auch ganz normal schließen lässt.

      Ich will dir da mal was zeigen:
      ...
      <body onUnload="stay_here();">
      <form onSubmit="return go_on();" name="meinForm">
        <input type="text" name="Name" />
        ...
        <a href="javascript:document.meinForm.submit();">Link</a>
      </form>
      </body>
      ...

      Wie müsste da jetzt die Funktion stay_here() aussehen?
      und ich müsste noch ein zweiter Script machen, mit der Funktion go_on()? soweit alles richtig?

      Doch stay_here() lädt sich nun auch, wenn der Besucher auf den Link klickt, und das geöffnete Fenster seinen Vater schließen will. Also muss go_on() eine globale Variable, z.B. "good_end", auf <true> setzten, und stay_here() prüft mit deiner super-fallunterscheidung, ob good_end true oder false ist. Ist es false, kommt die Fehlermeldung, ansonsten: Tschüss, Besucher: Du bist frei!

      So wie du das Schreibst, klingt das schon sehr lustig *ggg*. Na ja, er wird ja vorher darauf hingewiesen. Nun, wie gesagt, es gibt gar kein Formular. Das Fenster ist eine Art PopUp, welches auf Klick auf Button kommt, (das alte Fenster wird geschlossen, neues öffnet sich in bestimmten format), und nun soll der Besucher weiter. Indem er auf den Link klickt.
      Vielleicht könntest du mir noch ein bisschen helfen, und ein kleiner Konfigurationsbeispiel geben. Ich wäre dir sehr dankbar.

      MfG, Dennis.

      --
      Auf Signaturen hab ich keinen Bock!!
      1. hi,

        Es geht mir nur darum, dass der Besucher auf den Link klickt, mit dem er wieder zu meiner Startseite kommt, die sich auch ganz normal schließen lässt.

        meinst du nicht, dass der besucher das von selber tun wird, wenn ihm danach zu mute ist?

        warum willst du es ihm aufzwingen?
        daraus kann man eigentlichnur schliessen, dass du deine eigene seite für so schlecht hältst, dass du die wahrscheinlichkeit, dass der user an dieser stelle auf deine startseite zurück möchte, für äusserst gering hältst.

        dann solltest du aber eher deine seite verbessern, als mit solch halbgaren methoden zu versuchen, den besucher zu bevormunden. dadurch verschlechterst du deine seite nur noch weiter.

        gruss,
        wahsaga

        1. Hallo!

          hm, ne, ein Freund will das eigentlich so haben, aber na ja, hab ihm das auch schon erklärt aber er will es unbedingt.
          Habe das jetzt soweit auch hinbekommen mit JavaScript. Er will damit noch den Besucher zähler in die Höhe treiben, weil jeder eigentlich noch mal auf die Startseite muss.

          MfG, Dennis.

          --
          Auf Signaturen hab ich keinen Bock!!
          1. hi,

            hm, ne, ein Freund will das eigentlich so haben, aber na ja, hab ihm das auch schon erklärt aber er will es unbedingt.
            Habe das jetzt soweit auch hinbekommen mit JavaScript. Er will damit noch den Besucher zähler in die Höhe treiben, weil jeder eigentlich noch mal auf die Startseite muss.

            er will also auf diese weise ein höheren stand seines besucher-"counters" erzielen.

            dann grüsse ihn doch mal freundlich von mir, und sage ihm, dass ich ihn dem zu folge nur für einen dummkopf halten kann.

            was die aussagekraft von solchen countern angeht, stehen hier ja bereits genug meinungen im archiv - aber wenn er den besucher zwingt, die startseite nochmals zu laden, wird auch ein besucher, der unser archiv hier nicht kennt, schnell merken, dass sein counter einen absoluten rotz wert ist.

            ich würde deinem freund vorschlagen, dass er sich einfach einmal am tag einen [du-weisst-schon-was] soll. davon geht's ihm sicher auch besser, und er braucht seine besucher nicht damit zu belästigen.

            gruss,
            wahsaga

            1. Hallo,

              er will also auf diese weise ein höheren stand seines besucher-"counters" erzielen.

              ...was absolut schwachsinnig ist, denn der Surfer besucht _vielleicht_ 2x die Startseite, aber mir wäre so ein System mit einem Zwang, noch mal die Startseite zu besuchen, zuwieder - dann würde ich die Seite eben nicht mehr besuchen, und der Counter, der jetzt eben "2 höher steht" könnte wenn ich nochmal die Seite besuchen würde nun schon viel höher stehen!

              dann grüsse ihn doch mal freundlich von mir, und sage ihm, dass ich ihn dem zu folge nur für einen dummkopf halten kann.

              Ja, du kannst ihn auch von mir grüßen, er soll sich mal über das klar werden, was ich eben im obigen Absatz geschrieben habe.

              was die aussagekraft von solchen countern angeht, stehen hier ja bereits genug meinungen im archiv...

              ...außerdem kann man bei vielen kostenlosen "Counter-hostern" [;-)] im Internet einen eigenen Minimalwert eingeben, geschweige denn von einem eigenen counter (also "selbstprogrammiert" auf der Webseite), wo man die Zählung individuell vornehmen kann - und wenn man's unbedingt nötig hat eben statt "besucherzahl+1" "besucherzahl+2" nimmt...

              • aber wenn er den besucher zwingt, die startseite nochmals zu laden, wird auch ein besucher, der unser archiv hier nicht kennt, schnell merken, dass sein counter einen absoluten rotz wert ist.

              Ich persönlich muss sagen, dass mich ein Counter auf einer - sagen wir jetzt mal "semiproffessionellen" Homepage (damit meine ich eine Homepage eines Hoppywebbastlers [bei mir mit einer gewissen art von html-anfänger und javascript-spielchen-aus-dem-internet kombiniert ;-)]) - sowieso nicht interressiert, da er in aller Regel von irgendso einem Counterservice ist, und der Seiteninhaber dort eingestellt hat, dass der Counter bei 10.000 Anfangen soll, zu zählen.

              Ob ein Counter realistisch ist oder nicht merkt ein Besucher eigentlich schon nach einem kurzen Besuch deiner Seite - wenn er 321.579 Besucher anzeigt und der Seitenersteller da etwas schlechtes hingerozt hat, dann ist der Counter sowieso nur Platzverschwendung auf der Seite...

              ich würde deinem freund vorschlagen, dass er sich einfach einmal am tag einen [du-weisst-schon-was] soll. davon geht's ihm sicher auch besser, und er braucht seine besucher nicht damit zu belästigen.

              Auch eine Alternative ;-)

              WauWau