Script laten doorlopen als pagina gesloten wordt
is er misschien een tutorial waar in uitgelegt staat hoe je een javascript kan laten verderwerken als pagina gesloten wordt?
bijvoorbeeld ik open een pagina die van 1 min naar 0 sec telt als ik de pagina verlaat op 45 sec en ik kom 10sec later terug op de pagina dat de teller verder telt van 35 naar 0
alvast bedankt!
Gewijzigd op 22/06/2010 15:46:21 door Jasper DS
Gewijzigd op 22/06/2010 15:45:38 door Jasper DS
En anders moet je moet gaan werken met cookies? Daar de laatste bezoek datum/tijd op instellen (dus laatste tijd, en elke seconde de tijd in de cookie opslaan) en dan als je de pagina weer opent het verschil in seconden uitrekenen en dan dat van af het totaal af te halen en dan daarmee weer verder gaan.
BV: De totale af te tellen seconden is 120 seconden, de bezoeker komt op je website op: 15:52:05, en verlaat de website op 15:52:10. (dan sla je 15:52:10 op en het aantal seconden op in dit geval 5 sec) daarna komt de gebruiker weer op 15:52:30 weer terug dus reken je het verschil van het weg gaan met de huidige tijd dus in dit geval 20 seconden + de 5 seconde die die al bekeken had. Dus 120 - 25 seconden = 95 seconde waar de teller mee verder gaat.
Dit lijkt mij een oplossing??
edit: weet jij daar een goed tut voor? En stel ik de cookies in met java, html, php, .. ?
ik zal even tonen wat ik juist wil bereiken:
(ik ben nog maar een beginner dus als er iets fout staat in mijn script mag je dat zeggen)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<form name="form12" method="post" action="">
<table>
<tr>
<td colspan="2"><input type="submit" name="Submit12" value="haal">
</tr>
</table>
<?php } else {?>
<script type="text/javascript">
var sc = 116;
var dt = new Date();
var ts = dt.getTime()/1000;
function cdtimer() {
var dt = new Date();
var ts2 = dt.getTime()/1000;
var sp = ts2-ts;
var nbr = sc - sp;
if (nbr < 0) { document.location.href = document.location.href; }
var min = Math.floor(nbr / 60); if (min < 0) { min = 0; }
var sec = Math.floor(nbr - (min*60)); if (sec < 0) { sec = 0; }
if (min < 10) min = "0"+min;
if (sec < 10) sec = "0"+sec;
if (min > 60) {
var hrs = Math.floor(min / 60); if (hrs < 0) { hrs = 0; }
if (hrs < 10) hrs = "0"+hrs;
min = min - hrs*60;
if (min < 10) min = "0"+min;
if (document.getElementById('cdtimer_crime')) document.getElementById('cdtimer_crime').innerHTML = hrs+':'+min+':'+sec;
} else {
if (document.getElementById('cdtimer_crime')) document.getElementById('cdtimer_crime').innerHTML = min+':'+sec;
}
}
window.setInterval('cdtimer();', 1000);
window.setTimeout('cdtimer();', 100);
</script>
</table>
<td width="95%">Je moet nog <span id="cdtimer_crime">01:38</span> wachten.</td>
</table>
<?php
}
?>
<table>
<tr>
<td colspan="2"><input type="submit" name="Submit12" value="haal">
</tr>
</table>
<?php } else {?>
<script type="text/javascript">
var sc = 116;
var dt = new Date();
var ts = dt.getTime()/1000;
function cdtimer() {
var dt = new Date();
var ts2 = dt.getTime()/1000;
var sp = ts2-ts;
var nbr = sc - sp;
if (nbr < 0) { document.location.href = document.location.href; }
var min = Math.floor(nbr / 60); if (min < 0) { min = 0; }
var sec = Math.floor(nbr - (min*60)); if (sec < 0) { sec = 0; }
if (min < 10) min = "0"+min;
if (sec < 10) sec = "0"+sec;
if (min > 60) {
var hrs = Math.floor(min / 60); if (hrs < 0) { hrs = 0; }
if (hrs < 10) hrs = "0"+hrs;
min = min - hrs*60;
if (min < 10) min = "0"+min;
if (document.getElementById('cdtimer_crime')) document.getElementById('cdtimer_crime').innerHTML = hrs+':'+min+':'+sec;
} else {
if (document.getElementById('cdtimer_crime')) document.getElementById('cdtimer_crime').innerHTML = min+':'+sec;
}
}
window.setInterval('cdtimer();', 1000);
window.setTimeout('cdtimer();', 100);
</script>
</table>
<td width="95%">Je moet nog <span id="cdtimer_crime">01:38</span> wachten.</td>
</table>
<?php
}
?>
en dit moet blijven lopen tot de tijd aan nul is zelfs als het venster, pagina word gesloten
Gewijzigd op 22/06/2010 16:03:37 door Jasper DS
En google voortaan even... http://www.google.nl/#hl=nl&source=hp&q=cookie+javascript+example&aq=1&aqi=g8&aql=&oq=cookie+javascript&gs_rfai=&fp=36dcfdd470e09c9e
heb je wel gezocht voor javascript cookies?....
Oetzie en mijn achternaam op 22/06/2010 16:01:32:
Je moet gewoon de timer maken in javascript en op elke seconde wijzig je de cookie content met javascript...
En google voortaan even... http://www.google.nl/#hl=nl&source=hp&q=cookie+javascript+example&aq=1&aqi=g8&aql=&oq=cookie+javascript&gs_rfai=&fp=36dcfdd470e09c9e
heb je wel gezocht voor javascript cookies?....
En google voortaan even... http://www.google.nl/#hl=nl&source=hp&q=cookie+javascript+example&aq=1&aqi=g8&aql=&oq=cookie+javascript&gs_rfai=&fp=36dcfdd470e09c9e
heb je wel gezocht voor javascript cookies?....
ja ik zal eens kijken naar je link
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<script type="text/javascript">
var sc = 120;
function timer() {
if (sc > 1) {
sc = sc - 1;
document.getElementById('timer').innerHTML = sc;
} else {
document.getElementById('timer').innerHTML = 'De teller is uit geteld';
}
}
window.setInterval('timer()', 1000);
</script>
var sc = 120;
function timer() {
if (sc > 1) {
sc = sc - 1;
document.getElementById('timer').innerHTML = sc;
} else {
document.getElementById('timer').innerHTML = 'De teller is uit geteld';
}
}
window.setInterval('timer()', 1000);
</script>
Hier een kleine teller, misschien heb je hier iets aan ;)
en ik ben al opweg met cookies. Dus als ik het goed begrijp moet de cookie de datum van vertrek opslaan en het verschil tussen de start tijd en tijd van vertrek.
Mijn cookie zal dus 2 waardes hebben?
<script language="JavaScript">
function setCookie(name, value, expires) {
var deCookie = name + "=" + escape(value);
if(expires){
expires= expires.toGMTString();
deCookie += "; expires=";
deCookie += expires;
}
document.cookie = deCookie;
}}
</script>
bij naam moet ik een naam ingeven?
bij value moet ik de tijden neerzetten?
en bij expires de tijd dat de teller afloopt?
Gewijzigd op 22/06/2010 16:31:53 door Jasper DS
Let wel op dat gebruikers cookies kunnen veranderen en verwijderen etc.
edit: ik heb net gezien dat ik ook gewoon de eindtijd van het script kan instellen ik probeer dat is
Gewijzigd op 22/06/2010 16:45:09 door Jasper DS
Jasper ja wat schiet je daar mee op? Als je het venster weg klikt word het script gelijk gestopt... Dus word het script niet verder uitgevoerd.
Gewijzigd op 22/06/2010 18:50:42 door - SanThe -
SanThe en dan elke sec de tijd in de database update? Of wanneer iemand de pagina sluit? Via body unload ofzo?
Wat de TS van plan is is mij in het geheel niet duidelijk.
schema:
knop->tijd loopt->tijd = 0-> pagina opent terug
wat kan je nu doen: op de knop klikken pagina terug openen en je moet niet wachten
en dat is het probleem want dat mag niet
Dus mijn idee kan werken.
if (pagina sluit) {
mysql_query = update teller set....
}
Waarom wil je de teller updaten? Zet gewoon de betreffende eindtijd in de database. Het sluiten van een venster of browser is niet betrouwbaar te onderscheppen.
SanThe, klopt jouw idee werkt. Had ik niet aan gedacht, had niet verder dan mijn neus gekeken.
Wat SanThe bedoelt is de eindtijd in de database te zetten en niet de tellerstand ten tijde van het het afsluiten.
Op de pagina zijn de leden ingelogd. Dan klikken ze op een button de tijd begint te lopen en na die tijd kunnen ze terug op een button klikken. Alles werkt dus nu bij mij alleen als je de pagina herlaad is de teller niet meer aan het lopen.
PS: is er een probleem als mijn server de tijden niet goed opslaat. Bv.: altijd 2 uur te vroeg