Emmi: Gegenteil von document.referrer gesucht

Ich würde gern wissen, ob jemand eine Lösung dafür weiß. Wenn ein Benutzer eine Webpage verlassen will (Link angeklickt, andere URL eingegeben etc.) dann möchte ich gerne abchecken, ob es sich bei dem Ziel, zu dem er hingeht, um eine Adresse auf derselben Seite/Domain/etc. handelt, um im onUnload() Event darauf differenziert reagieren zu können. (Z.B. Frage: "Wollen Sie wirklich schon gehen!?").

  1. Ich würde gern wissen, ob jemand eine Lösung dafür weiß. Wenn ein Benutzer eine Webpage verlassen will (Link angeklickt, andere URL eingegeben etc.) dann möchte ich gerne abchecken, ob es sich bei dem Ziel, zu dem er hingeht, um eine Adresse auf derselben Seite/Domain/etc. handelt, um im onUnload() Event darauf differenziert reagieren zu können. (Z.B. Frage: "Wollen Sie wirklich schon gehen!?").

    Ganz einfache Aussage: Tu's nicht! Das nervt wahnsinnig, und es wird z.B. vom Webwasher auch gefiltert, weil es dumme Leute gibt, die beim Verlassen der Webseite noch 20 Werbefenster aufmachen müssen, damit sie 2 Pfennig verdienen (oder auch nicht).

    - Sven Rautenberg

    1. Ich würde gern wissen, ob jemand eine Lösung dafür weiß. Wenn ein Benutzer eine Webpage verlassen will (Link angeklickt, andere URL eingegeben etc.) dann möchte ich gerne abchecken, ob es sich bei dem Ziel, zu dem er hingeht, um eine Adresse auf derselben Seite/Domain/etc. handelt, um im onUnload() Event darauf differenziert reagieren zu können. (Z.B. Frage: "Wollen Sie wirklich schon gehen!?").

      Ganz einfache Aussage: Tu's nicht! Das nervt wahnsinnig, und es wird z.B. vom Webwasher auch gefiltert, weil es dumme Leute gibt, die beim Verlassen der Webseite noch 20 Werbefenster aufmachen müssen, damit sie 2 Pfennig verdienen (oder auch nicht).

      • Sven Rautenberg

      Der wahre Hintergrund (den ich der Kürze halber weggelassen habe) ist etwas anders. Wenn ein Benutzer auf (m)einer Seite ein Formular ausfüllen kann und er hat dort schon etwas eingegeben, dann möchte ich ihn, wenn er einen Link anklickt, der ihn von dem Formular wegführen würde, die Chance geben, es sich noch mal zu überlegen bzw. das Formular vorher fix noch zu submitten. Sonst ärgert er sich u.U. daß er soundsoviele Felder umsonst ausgefüllt hat, bloß weil er aus Versehen auf die Maus gedrückt oder eine falsche Tastenkombination erwischt hat...

      1. ...aber dann ist es doch irrelevant, ob der Besucher zu einer fremden oder zu einer anderen Seite von Dir wechselt. Dann kannst Du doch immer auf der Formular-Seite mit onUnload eine Prüfung starten, ob im Formular etwas eingegeben wurde.

        ciao
        axel

        1. ...aber dann ist es doch irrelevant, ob der Besucher zu einer fremden oder zu einer anderen Seite von Dir wechselt. Dann kannst Du doch immer auf der Formular-Seite mit onUnload eine Prüfung starten, ob im Formular etwas eingegeben wurde.

          ciao
          axel

          Wie ich in einer anderen Antwort schon dargelegt habe, geht es auch gar nicht um die genauen "Fluchtadressen". Das Problem ist nur, daß es Fälle gibt, wo das temporäre Verlassen (zum Zwecke des sofortigen Wiederanzeigens, aber mit anderen Informationen, je nach angeklicktem, aber nicht von mir, sondern vom Server automatisch erzeugtem Link) ok ist, während ich es in anderen Fällen (externe Ziele) gern noch einmal bestätigt wissen würde, um zu vermeiden, daß dem Benutzer der Internetanwendung (Content Management System) ein Fehler unterläuft (Eingabe-Datenverlust).

      2. Der wahre Hintergrund (den ich der Kürze halber weggelassen habe) ist etwas anders. Wenn ein Benutzer auf (m)einer Seite ein Formular ausfüllen kann und er hat dort schon etwas eingegeben, dann möchte ich ihn, wenn er einen Link anklickt, der ihn von dem Formular wegführen würde, die Chance geben, es sich noch mal zu überlegen bzw. das Formular vorher fix noch zu submitten. Sonst ärgert er sich u.U. daß er soundsoviele Felder umsonst ausgefüllt hat, bloß weil er aus Versehen auf die Maus gedrückt oder eine falsche Tastenkombination erwischt hat...

        Warum willst du dann wissen, ob der Besucher auf deiner Seite bleibt oder auf einer anderen weitersurft?

        Du könntest das Problem für die Links folgendermaßen lösen: Bei jedem Link rufst du mit onClick eine Funktion auf, die das Formular überprüft und entweder true oder bei ausgefülltem Formular nach einer Abfrage entsprechend true (Link aufrufen) oder false (auf Seite bleiben um Formular abzusenden) zurückgibt.

        Um die URL brauchst du dir keine Gedanken zu machen, man gibt nicht so leicht versehentlich eine neue URL in die Adresszeile des Browsers ein.

        CU :-)
        Stefan

        1. » Du könntest das Problem für die Links folgendermaßen lösen: Bei jedem Link rufst du mit onClick eine Funktion auf, die das Formular überprüft und entweder true oder bei ausgefülltem Formular nach einer Abfrage entsprechend true (Link aufrufen) oder false (auf Seite bleiben um Formular abzusenden) zurückgibt.<<

          Das Problem liegt ja gerade bei den Links. Da der Server die automatisch generiert und mit irgendwelchen kryptischen temporären ids und onclick()-Funktionen belegt, wäre es für mich viel einfacher, eine solche (offensichtlich aber nicht vorhandene) property benutzen zu können. Natürlich kann ich auch im onload Event an jeden link noch eine onclick-Behandlung dranbasteln, aber das ist einfach nur umständlich und fehleranfällig. Und wahrscheinlich nicht cross-browser-fähig. Netscape 4.7 oh-oh...

      3. Der wahre Hintergrund (den ich der Kürze halber weggelassen habe) ist etwas anders. Wenn ein Benutzer auf (m)einer Seite ein Formular ausfüllen kann und er hat dort schon etwas eingegeben, dann möchte ich ihn, wenn er einen Link anklickt, der ihn von dem Formular wegführen würde, die Chance geben, es sich noch mal zu überlegen bzw. das Formular vorher fix noch zu submitten. Sonst ärgert er sich u.U. daß er soundsoviele Felder umsonst ausgefüllt hat, bloß weil er aus Versehen auf die Maus gedrückt oder eine falsche Tastenkombination erwischt hat...

        Hälst du dieses Szenario wirklich für wahrscheinlich? Ich behaupte:

        1. Der User ist willens und in der Lage, einen formulargrauen "Abschicken"-Button zu finden und zu betätigen, wenn man ihm dies im Anleitungstext zum Formular sagt (und oftmals auch ohne Anleitung).

        2. Der User kann, sollte er doch mal irrtümlich falsch geklickt haben, immer noch die Zurück-Taste des Browsers benutzen und wird dann sein unvollständig ausgefülltes Formular wieder vorfinden. Das funktioniert in allen mir bekannten Browsern, in allen Versionen. Dem User ist die Funktion der Zurück-Taste bekannt.

        Naja, und selbst wenn: Wenn du hier Fragen stellst, dann laß nichts aus irgendwelchen Gründen weg, sondern beschreibe das Problem möglichst genau. Das hätte dir in diesem Fall einige Kommentare erspart. ;)

        - Sven Rautenberg

          1. Der User ist willens und in der Lage, einen formulargrauen "Abschicken"-Button zu finden und zu betätigen, wenn man ihm dies im Anleitungstext zum Formular sagt (und oftmals auch ohne Anleitung).<<

          Es gibt KEINEN mausgrauen (sowas sowieso nich ;-)) Button, sondern einen Link (oben im Menuframe) mit der Aufschrift "Speichern" und einen mit "Schließen". Letzterer fragt schon mal nach, ob man denn nicht vorher speichern will. Aber wenn der Benutzer woanders hinklickt, will ich ihn das auch gern fragen können. Dazu müßte man halt im onUnload erfahren können, WO er denn hingeklickt hat...

          1. Der User kann, sollte er doch mal irrtümlich falsch geklickt haben, immer noch die Zurück-Taste des Browsers benutzen und wird dann sein unvollständig ausgefülltes Formular wieder vorfinden. Das funktioniert in allen mir bekannten Browsern, in allen Versionen. Dem User ist die Funktion der Zurück-Taste bekannt.<<

          Die normale Browsernavigation ist (wegen der sequentielen Verarbeitung der Formulare) DEAKTIVIERT!!! Drum MUSS ich doch fragen!!!

          Naja, und selbst wenn: Wenn du hier Fragen stellst, dann laß nichts aus irgendwelchen Gründen weg, sondern beschreibe das Problem möglichst genau. Das hätte dir in diesem Fall einige Kommentare erspart. ;)<<

          Ein einfaches: NEIN, so was gibts nicht! hätte es als einzige Antwort auch getan ...

          1. Hallo!

            Versuch doch folgendes:

            function checkURL(X)
            {
              check = confirm("Wollen Sie Ihr Formular speichern?");
              if(check == false)
              {
                window.location.href = X;
              }
              else
              {
                // Code zum Formularspeichern
              }
            }

            Aufruf:

            <a href="http://www.blabla.xy" onClick="checkURL('http://www.blabla.xy');return false">blabla</a>

            HTH Markus

          2. Ein einfaches: NEIN, so was gibts nicht! hätte es als einzige Antwort auch getan ...

            Es kommt drauf an, wie man fragt, und was man fragt. Es gibt genug Idioten, deren Threads hier genauso anfangen wie deiner, aber ein gänzlich anderes Ziel haben.

            Da du es anscheinend in einer anderen Antwort überlesen hast:

            OnUnload nehmen! Und hier gucken: </selfhtml/tebj.htm#a25>

            - Sven Rautenberg

  2. 'Tach

    1. das wäre ja noch schöner, wenn jeder mitschneiden kann wo ich hingehe...

    2.

    Z.B. Frage: "Wollen Sie wirklich schon gehen!?"

    Herzlichen Glückwunsch! Du hast einen schönen Weg gefunden Dich hier unbeliebt zu machen. Da werden bestimmt noch einige _schöne_ Antworten kommen...

    viel Spaß
    axel

    1. 'Tach

      1. das wäre ja noch schöner, wenn jeder mitschneiden kann wo ich hingehe...

      Nun, dank document.referrer kann man ja schon mal sehen, wo Du hergekommen bist. Bist Du da auch dagegen???

      Z.B. Frage: "Wollen Sie wirklich schon gehen!?"
      Herzlichen Glückwunsch! Du hast einen schönen Weg gefunden Dich hier unbeliebt zu machen. Da werden bestimmt noch einige _schöne_ Antworten kommen...

      viel Spaß
      axel

      1. Hallo Emmi,

        1. das wäre ja noch schöner, wenn jeder mitschneiden kann wo ich hingehe...
          Nun, dank document.referrer kann man ja schon mal sehen, wo Du hergekommen bist. Bist Du da auch dagegen???

        Der Sinn ist da auch ein ganz anderer!
        Du willst dann wissen, durch welche "Tür" jemand kam.
        Das kann sinnvoll sein, um zu wissen, ob z.B. Werbebanner, Links auf externen Seiten, usw. gut plaziert sind bzw. durch welche Suchbegriffe man gefunden wurde, um die META-Tags u.U. zu verbessern.

        Wenn Du irgendwo Links zu anderen Seiten anbietest, könntest Du per "onclick..." feststellen, welche Links für Deine User interessant erscheinen, das wäre dann vergleichbar.

        Reiner

        1. Wenn Du irgendwo Links zu anderen Seiten anbietest, könntest Du per "onclick..." feststellen, welche Links für Deine User interessant erscheinen, das wäre dann vergleichbar.

          Reiner

          Ist schon klar. Die Folge der allgemeinen Paranoia ist, daß jeder hinter meiner Frage nur unlautere Absichten wittert. Dabei geht es um ein Programmierdetail einer Internetanwendung, die mit verschiedenen Formularen arbeitet, die auch "zwischengespeichert", also submittet werden. Dabei wird zwar das Dokument auch zwischenzeitlich verlassen, was aber kein Problem ist, da es gleich wieder geladen wird. Diesen Fall möchte ich einfach von dem des Verlassens über einen externen Link unterscheiden können. Das Abprüfen beim onclick() ist deswegen schlecht, weil die Links im Dokument z.T. vom Server (Domino) automatisch generiert werden (mit server-intern generierter onclick-Behandlung) und namentlich nicht bekannt und ihre Ziele irgendwelche 64stelligen Zufallskombinationen sein können.
          Es wäre einfach nur viel EINFACHER, wenn es eine andere Möglichkeit gäbe...

          1. Ist schon klar. Die Folge der allgemeinen Paranoia ist, daß jeder hinter meiner Frage nur unlautere Absichten wittert. Dabei geht es um ein Programmierdetail einer Internetanwendung, die mit verschiedenen Formularen arbeitet, die auch "zwischengespeichert", also submittet werden. Dabei wird zwar das Dokument auch zwischenzeitlich verlassen, was aber kein Problem ist, da es gleich wieder geladen wird. Diesen Fall möchte ich einfach von dem des Verlassens über einen externen Link unterscheiden können. Das Abprüfen beim onclick() ist deswegen schlecht, weil die Links im Dokument z.T. vom Server (Domino) automatisch generiert werden (mit server-intern generierter onclick-Behandlung) und namentlich nicht bekannt und ihre Ziele irgendwelche 64stelligen Zufallskombinationen sein können.
            Es wäre einfach nur viel EINFACHER, wenn es eine andere Möglichkeit gäbe...

            Da Du ja jetzt erklärt hast, was der Sinn sein soll, ist der Vorwurf, daß jeder "Umlautere Absichten wittert" wohl hinfällig.
            Ich denke, es wurden genug techn. Hinweise gegeben. Wenn Du das nicht umsetzen kannst, ist das doch nicht unser Problem, oder?

            Reiner

            1. Da Du ja jetzt erklärt hast, was der Sinn sein soll, ist der Vorwurf, daß jeder "Umlautere Absichten wittert" wohl hinfällig.
              Ich denke, es wurden genug techn. Hinweise gegeben. Wenn Du das nicht umsetzen kannst, ist das doch nicht unser Problem, oder?

              Reiner

              Der Ton ist wirklich klasse hier... Meine Frage war, ob es eine property gibt (ich kenne keine) oder eine Programmiermöglichkeit JENSEITS von onclick() bei jedem einzelnen Link.

              Anstatt hier endlos über den (womöglich noch moralischen) Sinn oder Unsinn meiner Frage zu debattieren, hätte es je genügt, wenn jemand, der es definitiv WEISS, schreiben würde: NEIN, gibt es nicht. Oder: JA, und zwar so und so...

        1. das wäre ja noch schöner, wenn jeder mitschneiden kann wo ich hingehe...
          Nun, dank document.referrer kann man ja schon mal sehen, wo Du hergekommen bist. Bist Du da auch dagegen???

        Du kannst es ja nur sehen, wenn ich per Link auf Deine Seiten komme und dann finde ich es auch in Ordnung, da es ja für Dich interessant sein kann, wo Du so überall verlinkt bist. (Das Gegenteil davon wäre übrigens ein Link auf Deiner Seite und da weißt Du ja hoffentlich wo er hingeht.) Du kannst aber auch mit allen referrers dieser Welt nicht sehen auf welcher Seite ich vorher war, wenn ich einfach nur Deine URL in die Adreßzeile eingebe und genau das wäre dann auch nicht mehr in Ordnung.

        bis dann
        axel

        1. Du ja hoffentlich wo er hingeht.) Du kannst aber auch mit allen
          referrers dieser Welt nicht sehen auf welcher Seite ich vorher
          war, wenn ich einfach nur Deine URL in die Adreßzeile eingebe und
          genau das wäre dann auch nicht mehr in Ordnung.

          Wenn es eine property (z.B. document.referto) gäbe, die

          • wenn ich oben eine URL eingebe leer ist
          • wenn ein link auf meiner Seite angeklickt wurde, die URL dieses Links enthält
          • wenn ein link mit Ziel in meiner (derselben) Domain angeklickt wurde, diese URL enthält
          • wenn ein anderer link angeklickt wurde, auch leer ist

          dann wäre alles ok. Dann könnte ich nämlich sagen
          if (document.referto == "" && notsubmitted == true) {askforsubmit();}

          Ich will doch überhaupt nicht wissen, wo genau einer hingeht, sondern ob er MEINE Site verläßt. Und das werde ich doch wohl noch wissen dürfen!?

  3. Ich würde gern wissen,

    das geht Dich nix an, wo ich hinwill.

    Frage: "Wollen Sie wirklich schon gehen!?").

    Du sollst mich (und auch sonst niemanden) nicht mit Blödheiten belästigen.
    Gruss
    Christian

    1. Ich würde gern wissen,
      das geht Dich nix an, wo ich hinwill.

      Frage: "Wollen Sie wirklich schon gehen!?").

      Du sollst mich (und auch sonst niemanden) nicht mit Blödheiten belästigen.
      Gruss
      Christian

      1. Weiß ich dank document.referrer schon mal wo du hergekommen bist.
      2. Wenn du bei mir einen link anklickst, weiß ich sowieso wo du hingehst - onclick().
      3. Besteht kein Anlaß ausfällig zu werden.
      4. Zur näheren Informationen über den Hintergrúnd der Frage bitte andere Antworten zu dieser Frage lesen.