/ Forside / Teknologi / Udvikling / Java Scripts / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java Scripts
#NavnPoint
molokyle 5410
Klaudi 2799
smorch 2439
kim 1360
Harlekin 1134
bentjuul 984
gibson 800
severino 695
Random 675
10  konsulent.. 626
on Window.close ??
Fra : John Kjoller


Dato : 13-07-05 11:39

Kan man lægge en handling ind som udføres, når browseren lukkes, og siden
forlades?

Jeg vil gerne sende en besked til min database, når brugeren forlader siden,
eller lukker browseren. Men er i tvivl om hvordan jeg gør....

Der vil være links på siden, - til andre sider "udenfor", og disse åbner i
nye vinduer. - Og dette skal ikke sende besked til databasen. KUN når siden
forlades/lukkes.

Muligt?

Kh
john



 
 
Jens Gyldenkærne Cla~ (13-07-2005)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 13-07-05 12:42

John Kjoller skrev:

> Kan man lægge en handling ind som udføres, når browseren lukkes, og siden
> forlades?

I princippet ja. I praksis kan det være forhindret af browseren.

Der er to hændelser man kan kalde i forbindelse med lukning af et
vindue. Onunload er understøttet af de fleste browsere mens
OnBeforeUnload så vidt jeg ved kun understøttes af IE og
Mozilla/Firefox.


> Jeg vil gerne sende en besked til min database, når brugeren forlader siden,
> eller lukker browseren.

Her kommer problemet. For at sende noget til din database skal du hente
en ny side fra serveren. Det kan enten gøres med et pop op-vindue eller
ved at omdirigere den adresse man er på vej til. Pop op-vinduet vil
blive blokeret af enhver anstændig browser i dag. Omdirigeringen vil
ikke virke hvis man bruger onunload og vinduet forsøges lukket (men kan
virke hvis man er på vej til et andet site).

Helt generelt er problemet at onunload/onbeforeunload meget let kan
misbruges (og også i stor stil er blevet misbrugt) til at hindre at man
forlader en side, eller til at åbne 20 tilknyttede sider når man
forlader en enkelt. Derfor sætter moderne browsere restriktioner for
hvad der kan foregå i sådan et unload-script.

Så vidt jeg ved er den mindst ringe løsning at bede brugerne om at
tillade pop op-vinduer fra en given side - og så bruge pop op til at
kommunikere med serveren. Pop op-vinduet kan og bør lukke sig selv når
behandlingen er færdig. En løsning der måske kan virke i browsere der
forstår unbeforeunload er at prøve at refreshe en indlejret iframe.

> Der vil være links på siden, - til andre sider "udenfor", og disse åbner i
> nye vinduer. - Og dette skal ikke sende besked til databasen. KUN når siden
> forlades/lukkes.

Det er ikke noget problem. onunload og onbeforeonload er hændelser til
window-objektet - åbning af nye vinduer vil ikke resultere i kald til
dem.

--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Martin Hintzmann And~ (13-07-2005)
Kommentar
Fra : Martin Hintzmann And~


Dato : 13-07-05 13:26

John Kjoller wrote:
>
> Jeg vil gerne sende en besked til min database, når brugeren forlader siden,
> eller lukker browseren. Men er i tvivl om hvordan jeg gør....
>

Serverside mæssigt kan du ved eventen Session_OnEnd sende en besked til
din database.
Eventen sker når brugeren har være inaktiv på siden og sessionen
udløber. (Normalt er det 20 min.)

--
Martin Hintzmann Andersen
http://www.hintzmann.dk/

Søg
Reklame
Statistik
Spørgsmål : 177554
Tips : 31968
Nyheder : 719565
Indlæg : 6408851
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste