Avatar billede sholm Nybegynder
03. marts 2008 - 10:34 Der er 12 kommentarer og
2 løsninger

Opdater side ved ingen aktivitet

Hej

Jeg vil have opdateret en side hvis der ikke har været nogen aktivitet i f.eks. 1 minut.

Jeg kan nok finde ud af at opdatere siden i javascript, men hvordan kan jeg teste på om der har været aktivitet? Jeg forestiller mig noget med en timer der skal løbe om starte forfra hvis der er noget aktivitet.

Nogle ideer?
Avatar billede jokkejensen Novice
03. marts 2008 - 10:41 #1
definer aktivitet ? vi lever jo stadig i en lidt response/request verden.

Og fortæl hvilken form for sikkerhed der skal være, må brugere hvis de har lyst, snyde med at være aktive..

/JJ
Avatar billede sholm Nybegynder
03. marts 2008 - 10:50 #2
Hvis brugeren skriver noget i et textfelt, vælger noget i en dropdown, foretager en søgning, sorterer sin søgning osv. med en frekvens på f.eks. 1 min så er han aktiv og så skal siden ikke reloades. Det kan både være client og serverside aktivitet.

Han må snyde det han vil :)
Avatar billede w13 Novice
03. marts 2008 - 11:10 #3
Hmm. Det må være noget med at tjekke på onclick på body-tagget så.
Avatar billede jokkejensen Novice
03. marts 2008 - 11:17 #4
Okay.

Jeg ville gøre det ved at tildele alle input en onfocus event på window.load.

Lad deres onfocus nulstille din timer.

psuedo:
(foreach(document.getElementsByTagName(input))elm.onfocus = function{})

ved nye page request, nul stil din timer.

Ydereligere vil jeg fange keyboards
http://javascript.about.com/library/bltut29.htm
og nul stille timer.

Når en bruger læser kan det være svært, men fang:
http://codepunk.hardwar.org.uk/ajs02.htm
http://www.w3schools.com/jsref/jsref_onmousemove.asp

Jeg tror ikke en timer på 60 sec er nok, giv lidt længere tid.


Lig timeren i en server session og opdater den med ajax.



/JJ
Avatar billede jokkejensen Novice
03. marts 2008 - 11:18 #5
onclick på bodytagget vil ikke virke hvis man ligger et lag inden i.. så er det kun hvis man klikker uden for selve siden (altså ikke rammer noget indhold)

/JJ
Avatar billede jokkejensen Novice
03. marts 2008 - 11:20 #6
Du må i hvert fald ikke sætte session ttl til 1 min.
Avatar billede jokkejensen Novice
03. marts 2008 - 11:24 #7
Ligeledes skal du passe på ikke at requeste den server session for ofte..

Altså sætte nogle regler for hvornår den skal opdatere sig... og ikke bare ved alle events.. onmousemove kunne godt blive farlig..

Måske en onmouseover på nogle valgte containers, var mere fornuftigt, så overgang med mus fra #content til #menu ville registreres, og ikke registrere alt, jeg bruger ofte musen lige til at "læse" med, det vil tage mange ressourcer på serveren.

(måske mit ajax/session update skulle droppes)

/JJ
Avatar billede jokkejensen Novice
03. marts 2008 - 11:30 #8
Du kan eventuelt også bare lade alle mine foreslag lave en js variable om fra 0 til 1.. og hvert minut opdaterer session til active, hvis js variable = 1.

brug setInterval til "cronjob" :)

/JJ
Avatar billede sholm Nybegynder
03. marts 2008 - 11:30 #9
Tror jeg vil bruge en kombination at keyboard events på body og den onfocus på alle elementer som du foreslår.

Tester det lige, tak for input indtil nu :)
Avatar billede sholm Nybegynder
03. marts 2008 - 12:32 #10
Det ser ud til at det virker med følgende:
- Start et interval onload på body
- Nulstil interval ved onkeypress og onmousedown på body
- Nulstil interval onfocus på alle elementer på siden

Smid endelig et svar jokkejensen!
Avatar billede jokkejensen Novice
03. marts 2008 - 12:41 #11
øhmm det var mere w13's det der.. (onmousedown på body)

Så vi kan vel dele.

/JJ
Avatar billede jokkejensen Novice
03. marts 2008 - 12:41 #12
how svar..
Avatar billede w13 Novice
03. marts 2008 - 14:26 #13
Fint. =)
Avatar billede sholm Nybegynder
03. marts 2008 - 21:53 #14
Tak for hjælpen :)
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

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