Moet een popupje maken voor een website en dan implementeren, dat is geen probleem. Maar meeste mensen houden niet echt van popups, dus om de regelmatige gebruikers te ontzien wil ik dmv een cookie bepalen of de popup wel of niet te voorschijn komt.
Regelmatige bezoekers krijgen hem een maal per 7 dagen te zien, nieuwe bezoekers of regelmatige bezoekers die langer dan 2 dagen niet geweest zijn krijgen de popup te zien. In pseudo-code heb ik het volgende ingedachte:
Dat heb ik uitgewerkt tot onderstaande code, maar ik heb waarschijnlijk een denkfout inzitten, waardoor de popup elke keer te zien is. Ik heb me er blind opgestaart maar kan niet ontdekken waar ik mis ga.
Regelmatige bezoekers krijgen hem een maal per 7 dagen te zien, nieuwe bezoekers of regelmatige bezoekers die langer dan 2 dagen niet geweest zijn krijgen de popup te zien. In pseudo-code heb ik het volgende ingedachte:
code:
1
2
3
4
5
6
7
| IF geen cookie
THEN toon popup
ELSE
lees cookie
IF cookie ouder dan 7 dagen
THEN toon popup
zet cookie voor 2 dagen |
Dat heb ik uitgewerkt tot onderstaande code, maar ik heb waarschijnlijk een denkfout inzitten, waardoor de popup elke keer te zien is. Ik heb me er blind opgestaart maar kan niet ontdekken waar ik mis ga.
code:
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
| var now = new Date();
var cookieName = "CookiePopup";
var cookieValue = now.setTime(now.getTime() + 1000 * 60 * 60 * 168);
var cookieExpire = now.setTime(now.getTime() + 1000 * 60 * 60 * 48);
function popup()
{
iwin = window.open("popup.html","Promo","status=no,toolbar=no,location=no,menu=no,width=600,height=300");
}
if (!document.cookie)
{
popup();
}
else
{
cookieRawRead = document.cookie;
cookieRead = cookieRawRead.split("=");
cookieValue = cookieRead[1];
if (cookieValue < now.setTime(now.getTime()))
{
popup();
cookieValue = now.setTime(now.getTime() + 1000 * 60 * 60 * 168);
}
}
document.cookie = cookieName + "=" + cookieValue + ";expires=" + cookieExpire; |
[ Voor 5% gewijzigd door squaddie op 31-05-2004 18:15 . Reden: Typo fixed ]
There are never enough hours in a day, but always too many days before saturday.