Seite anzeiben bei Verlassen der Seite

  • Hallo beisammen,
    ich komme aus der ASP-Ecke und habe - leider immer noch trotz guter Vorsätze - keinerlei Ahnung von Java-Programmierung. Jetzt habe ich ein
    dringendes Problem, das mit ASP-Mitteln nicht in den Griff bekomme.
    Vielleicht könnt Ihr mir ja weiterhelfen ;)

    Ich habe eine Frameseite mit 4 frames, darunter der frame warenkorb.asp
    Darin sind Artikel eines Warenkorbs gespeichert.

    Problem: Verlässt der Besucher die Seite warenkorb.asp die sich im frame produkte.asp befindet über Alt+F4 oder Schließen im Browser so soll auf parent-Ebene eine Seite umfrage.asp geladen werden. Das soll nicht eintreten, wenn der User z.B. in den Bereich Kunden-Verwaltung wechselt, also die Seite per Link verlässt.

    Ich bin für jede Art der Problemlösung offen, egal wie umständlich.
    Denn ich brauche das schnell für meine Lösung.

    Danke im Voraus
    Stefan

  • Zitat von sdeltaw

    Problem: Verlässt der Besucher die Seite warenkorb.asp die sich im frame produkte.asp befindet über Alt+F4 oder Schließen im Browser so soll auf parent-Ebene eine Seite umfrage.asp geladen werden. Das soll nicht eintreten, wenn der User z.B. in den Bereich Kunden-Verwaltung wechselt, also die Seite per Link verlässt.

    JAVA bringt Dir hier nicht viel, ich tät's mit JavaScript probieren. Kennst Du Dich damit aus? Schau mal auf self HTML.

    Du kannst über das JavaScript Objektmodell (DOM) direkt auf den parent-frame zugreifen und dem dann eine URL zuweisen. Das sollte Dir helfen... // René!

    p/s: die Lösung funktioniert natürlich nur, wenn der Benutzer JavaScript eingeschalten hat. Eine universellere Lösung wäre eventuell CSS-Layer-basiert...? Kommt natürlich auf die Gesamtlösung an.

  • Zitat von sdeltaw

    Das hört sich für mich an wie Bahnhof. Könntest du das näher ausführen, vielleicht mit Beispielen.

    in einer webapplikation hat der server keinen schimmer, was der client gerade macht.die einzige möglichkeit zur komunikation besteht darin, das der client eine anfrage an den server schickt, also seite aufruft.

    ECMAScript (Javascript) läuft dagegen direkt auf deinem browser.

    d.h du kannst sagen: wenn fenster x geschlossen wird, öffne fenster y. Da das von vielen missbraucht wird (popups), ignorieren viele browser standardmässig diese funktion.

    Für beispiele solltest Du dir die von rck empfohlene referenz reinziehen.

    die hacks:

    alternativ kannst gibt es nur noch die möglichkeit mit refreshes oder polling zu arbeiten. Das sind beides wirklich schlechte hacks, für die du schon ziemlich verzweifelt sein musst.
    Ich musste (und habe) mal eine recht komplexe chatapplikation ohne clientseitige hilfe (javascript,plugins) implementieren, und ich kann dir versichern das du mit keiner der beiden möglichkeiten glücklich werden wirst.

    auf refresh basierte lösungen haben so etwas wie

    <META HTTP-EQUIV=Refresh CONTENT="10; URL=http://...">

    in dem header aller seiten stehen, die ohne zutuen des users anfragen stellen sollen. die seite wird dann einfach alle n sekunden neu geladen und dein script kann immer wieder neu entscheiden, welche daten geschickt werden sollen.
    => langsam, super viel traffik, und hässlich ist es auch noch.

    polling bedeutet, das du ein frame nie zuende laden lässt: es wird als ständig eine verbindung aufrecht erhalten, zum beispiel durch eine endlosschleife.

    irgendwann bricht die verbindung aber immer ab, da musst du dann mit einem refresh ran.


    Ansonsten kann ich dir noch sagen, das HTML nicht für solche spielereien gemacht wurde. Aber das wird dir wohl auch nicht viel helfen.

  • Zitat von a9bejo

    d.h du kannst sagen: wenn fenster x geschlossen wird, öffne fenster y. Da das von vielen missbraucht wird (popups), ignorieren viele browser standardmässig diese funktion.

    genau so sollte man hier ("kundenumfrage") vorgehen. denn wenn der benutzer popups ausgeschalten hat, bedeutet das, dass er auch die kundenumfrage nicht sehen möchte. ein seriöser webdesigner wird das akzeptieren, und nicht versuchen, das öffnen des fensters trotzdem irgendwie durchzusetzen.

    wie ginge das eigentlich genau? im <body>-tag ein onunload="parent.open('kundenumfrage.asp')" hinzufügen?

    edit: ach ja: http://www.javascriptkit.com/

    lg michi

  • Ich werde deinen Vorschlag ab Abend testen.
    Aber was ich weiß kommt das Fenster auch, wenn der Kunde die Seite per Link auf eine andere Seite meiner Homepage verlässt. Ist das hier nicht so?

    Stefan

  • Zitat von sdeltaw

    Ich werde deinen Vorschlag ab Abend testen.
    Aber was ich weiß kommt das Fenster auch, wenn der Kunde die Seite per Link auf eine andere Seite meiner Homepage verlässt. Ist das hier nicht so?

    Stefan


    du müsstest glaube ich das onunload-ereignis des framesets behandeln. denn wenn man mit alt+f4 oder X den browser schließt, sind ja alle frames weg.

    ich hoffe mein vorschlag funktioniert auch :D hab in letzter zeit nicht viel javascript programmiert. ich weiß nur, dass es in den implementierungen große unterschiede zwischen dem ie und anderen browsern gibt. das ist der nachteil von javascript.. weil es clientseitig wirkt, ist es vom browser abhängig. und die ganzen lynx-fetischisten werden sich aufregen, weil die seite in ihrem browser überhaupt nicht nicht funktioniert. :verycool:

    lg michi

  • Zitat von sdeltaw

    Hättest du für mich ein Beispeil was du damit meinst:

    onunload-ereignis des framesets

    das frameset ist die html-datei, die die einzelnen frames definiert und die anderen dateien einbindet, siehe [1]. es hat auch ein onunload-ereignis, siehe [2]. was du dort hineinschreibst, müsste also beim verlassen des ganzen konstrukts (= browser-schließen) aufgerufen werden.

    edit: vielleicht hast du die frames nicht mit html realisiert? du schreibst nur "frameseite". so viel ich weiß, können frames auch anders erstellt werden, html-frames sind aber die "üblichste" vorgangsweise.

    lg michi



    [1] http://de.selfhtml.org/html/frames/definieren.htm
    [2] http://de.selfhtml.org/html/referenz/attribute.htm#frameset

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!