Avatar billede robson Nybegynder
10. april 2008 - 17:27 Der er 6 kommentarer og
1 løsning

Registrer hvor lang tid bruger er på sitet

Jeg forestiller mig at jeg selv vil lave en simpel log til et site. Det der volder problemer er at logge hvor lang tid brugeren er på sitet.

Vha. global.asa og Session_OnStart kan jeg nemt registrer hvornår brugeren starter sit besøg.

Straks værre er det at registrere når brugeren forlader sitet!!

Jeg har forsøgt mig med Session_OnEnd, men den kan jeg slet ikke få til at trigge :(
Der er skrevet RIGTIGT meget om Session_OnEnd og den generelle konklusion er at der ikke er helt stabil...
Jeg har forsøgt at sætte Session.Timeout = 1 ved Session_OnStart for at trigge OnEnd hurtiger, men uden held!

Sitet jeg ønsker at logge på består KUN af én side (der afvikles noget flash) og jeg tænkte derfor at jeg kunne lave en onUnLoad="window.location.href='updateLog.asp';" hvor updateLog.asp filen så skriver sluttiden til databasen, men men men ingen succes...

Hvad jeg troede lige skulle være en lille hurtig vupti løsning er nu blevet til en lettere hovedpine... :(
Er der en ekspert der har en god idé til at løse dette problem??

Alt har interesse!
Avatar billede w13 Novice
11. april 2008 - 11:29 #1
Hvad med:

onbeforeunload="window.open('updateLog.asp','unload')"
?
Og så en javascript-funktion i updateLog.asp, der lukker det vindue, når der er registreret tiden:

window.close();
Avatar billede robson Nybegynder
11. april 2008 - 12:05 #2
Det virker faktisk!!!!!!!!!!!!!!!

Ved at benytte onbeforeunload istedet for onunload virker skidtet sgu :)

Jeg har lige rettet dit forslag til:
onbeforeunload="window.open('updateLog.asp','_self')"

således at der ikke åbnes et vindue som lukkes med det samme igen!

Tak for hjælpen w13 ;)
Avatar billede w13 Novice
11. april 2008 - 12:11 #3
Det var så lidt.

Men i øvrigt er 'unload' bare navnet på vinduet (til hvis man skal 'adressere' det). Så når du sætter '_self', sætter du vinduets navn til '_self', hvilket vist ikke er helt 'lovligt'. Det har altså ikke noget at gøre med target.
Avatar billede robson Nybegynder
11. april 2008 - 12:28 #4
Jeg tænkte også først at det bare var navnet på vinduet, men testede dog alligevel og
ved at angive _self istedet for dit unload åbnes IKKE et nyt vindue!
Dette bekræftes også her http://msdn2.microsoft.com/en-us/library/ms536651(VS.85).aspx
Avatar billede w13 Novice
11. april 2008 - 12:30 #5
Nå ja, det er da rigtigt. :)
Avatar billede robson Nybegynder
11. april 2008 - 12:32 #6
;)
Avatar billede robson Nybegynder
11. april 2008 - 13:59 #7
jeg har lige kontrolleret koden på Mac/Safari og det lader til at "onbeforeunload" ikke fungerer med Safari :(
Nogle gode idéer til en workaround?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester