Script laten doorlopen als pagina gesloten wordt

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jasper DS

Jasper DS

22/06/2010 15:44:55
Quote Anchor link
Beste,

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
 
PHP hulp

PHP hulp

25/04/2024 19:05:15
 
Jasper DS

Jasper DS

22/06/2010 15:45:17
Quote Anchor link
sorry voor dubbel post
Gewijzigd op 22/06/2010 15:45:38 door Jasper DS
 
Joakim Broden

Joakim Broden

22/06/2010 15:55:50
Quote Anchor link
Ehm als je de pagina sluit (dus venster sluit)? Want als je de pagina gewoon open laat en je surft in een nieuw tabblad dan gaat de tellen op het andere tabblad gewoon open.

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??
 
Jasper DS

Jasper DS

22/06/2010 15:57:13
Quote Anchor link
ja dat lijkt me goed dan ga ik gewoon cookies toevoegen. Die pagina komt op een pagina waar leden al zijn ingelogd als dat meerdere opties openlegt?

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)
PHP script in nieuw venster Selecteer het PHP script
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
<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
    }
    ?>


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
 
Joakim Broden

Joakim Broden

22/06/2010 16:01:32
Quote Anchor link
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?....
 
Jasper DS

Jasper DS

22/06/2010 16:04:11
Quote Anchor link
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?....


ja ik zal eens kijken naar je link
 
Joakim Broden

Joakim Broden

22/06/2010 16:23:39
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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>


Hier een kleine teller, misschien heb je hier iets aan ;)
 
Jasper DS

Jasper DS

22/06/2010 16:27:07
Quote Anchor link
de teller heb ik al (zie vorige post)
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
 
Joakim Broden

Joakim Broden

22/06/2010 16:30:37
Quote Anchor link
Ja, of je maakt 2 cookies.

Let wel op dat gebruikers cookies kunnen veranderen en verwijderen etc.
 
Jasper DS

Jasper DS

22/06/2010 16:32:38
Quote Anchor link
ai dat is wel een zeer groot probleem.. i.v.m. cheating etc. is er nog een andere optie?

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
 
Joakim Broden

Joakim Broden

22/06/2010 18:37:50
Quote Anchor link
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.
 
- SanThe -

- SanThe -

22/06/2010 18:48:14
Quote Anchor link
Waarom niet gewoon de tijd in een database. Bij openen van de pagina even berekenen hoeveel tijd nog over en een teller laten lopen. Pagina dicht en weer open dan gewoon weer hetzelfde doen, berekenen etc.
Gewijzigd op 22/06/2010 18:50:42 door - SanThe -
 
Joakim Broden

Joakim Broden

22/06/2010 18:52:25
Quote Anchor link
SanThe en dan elke sec de tijd in de database update? Of wanneer iemand de pagina sluit? Via body unload ofzo?
 
- SanThe -

- SanThe -

22/06/2010 18:54:07
Quote Anchor link
In de database staat de eindtijd lijkt mij.

Wat de TS van plan is is mij in het geheel niet duidelijk.
 
Jasper DS

Jasper DS

22/06/2010 19:03:13
Quote Anchor link
het is dus gewoon de bedoeling dat de pagina verborgen blijft tot dat de tijd om is. Als je da pagina open laat staan: geen probleem de teller loopt tot 0 en de pagina toont zich. MAAR: als je de pagina snel even opnieuw intypt (of op de link klikt) opent de pagina terug zonder dat de tijd om is.

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
 
- SanThe -

- SanThe -

22/06/2010 19:08:01
Quote Anchor link
Dus mijn idee kan werken.
 
Jasper DS

Jasper DS

22/06/2010 19:23:45
Quote Anchor link
ja jouw idee kan werken en wat is de functie voor pagina sluiten?
if (pagina sluit) {
mysql_query = update teller set....
}
 
- SanThe -

- SanThe -

22/06/2010 19:27:58
Quote Anchor link
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.
 
Joakim Broden

Joakim Broden

22/06/2010 19:28:52
Quote Anchor link
SanThe, klopt jouw idee werkt. Had ik niet aan gedacht, had niet verder dan mijn neus gekeken.
 
- Mark -

- Mark -

22/06/2010 19:30:27
Quote Anchor link
Is dit voor in een omgeving waarin " leden " zijn ingelogd of voor een willekeurige pagina die voor iedereen toegangkelijk is?

Wat SanThe bedoelt is de eindtijd in de database te zetten en niet de tellerstand ten tijde van het het afsluiten.
 
Jasper DS

Jasper DS

23/06/2010 15:07:52
Quote Anchor link
als dat zo kan is dat goed voor mij.
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
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.