[JAVASCRIPT] probleem met popup & cookie combi

Pagina: 1
Acties:

  • squaddie
  • Registratie: Februari 2000
  • Laatst online: 12:06
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:
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.


  • Tony diNovo
  • Registratie: Maart 2004
  • Laatst online: 05-06-2025
Ik heb er even naar zitten staren (blindstaren bijna inderdaad :) ).

Maar volgens mij zit het hem in het volgende:
Je zet cookieValue op 0.
Wanneer er geen cookie weggeschreven dan
(document.cookie = cookieName + "=" + cookieValue)
komt er in je cookie "CookiePopup=0;"

Als je weer op de site komt gaat de vergelijking "if (cookieValue < now.setTime(now.getTime()))" op waarbij cookieValue (welke uitgelezen is als ik de code zie) dus 0 is. En de statement altijd true zal geven waardoor de popup komt.

Dat is zover ik het zo nu even zie. Hoop dat dit wat helpt...

EDIT - ik heb geloof ik een beetje verkeerd zitten copy-pasten van de code... ik zal nog eens verder gaan staren.. Intussen al wat verder?

[ Voor 15% gewijzigd door Tony diNovo op 31-05-2004 19:16 ]

http://specs.tweak.to/9537


  • squaddie
  • Registratie: Februari 2000
  • Laatst online: 12:06
Tony diNovo schreef op 31 mei 2004 @ 18:16:
Ik heb er even naar zitten staren (blindstaren bijna inderdaad :) ).

Maar volgens mij zit het hem in het volgende:
Je zet cookieValue op 0.
Wanneer er geen cookie weggeschreven dan
(document.cookie = cookieName + "=" + cookieValue)
komt er in je cookie "CookiePopup=0;"

Als je weer op de site komt gaat de vergelijking "if (cookieValue < now.setTime(now.getTime()))" op waarbij cookieValue (welke uitgelezen is als ik de code zie) dus 0 is. En de statement altijd true zal geven waardoor de popup komt.

Dat is zover ik het zo nu even zie. Hoop dat dit wat helpt...

EDIT - ik heb geloof ik een beetje verkeerd zitten copy-pasten van de code... ik zal nog eens verder gaan staren.. Intussen al wat verder?
Die 0 had er neergezet om het een en ander te kunnen testen er had moeten staan: var cookieValue = cookieValue = now.setTime(now.getTime() + 1000 * 60 * 60 * 168);

Ik ben nog niet verder, dus ben ik het gaat versimpelen door het rekenen met dagen te vervangen door getallen, maar het wil nog niet lukken.
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
27
28
29
var now = new Date();
var cookieName = "CookiePopup";
var cookieValue = 0;
var cookieExpire = now.setTime(now.getTime() + 1000 * 60 * 60 * 48);
var cookieRawRead;
var cookieRead;

function popup()
{
    iwin = window.open("popup.html","Promo","status=no,toolbar=no,location=no,menu=no,width=600,height=300");
    cookieValue = 7;
}

if (!document.cookie)
{
    popup();
}
else
{
    cookieRawRead = document.cookie;
    cookieRead = cookieRawRead.split("=");
    cookieValue = cookieRead[1] - 1;
    if (cookieValue < 0)
    {
        popup();
    }
}
document.cookie = cookieName + "=" + cookieValue + ";expires=" + cookieExpire;
alert(cookieValue); //toont de waarde in een alertboxje


Nu moet het volgens mij zo werken:
code:
1
2
3
4
5
6
7
8
9
10
IF geen cookie
THEN toon popup
         cookieValue wordt 7
ELSE
        lees waarde uit cookie
        vul cookieValue en doe - 1
        IF cookieValue < 0
        THEN toon popup
                 cookieValue wordt 7
zet cookie

Toch blijft hij de popup tonen en de waarde blijft 7.

[ Voor 4% gewijzigd door squaddie op 31-05-2004 20:49 ]

There are never enough hours in a day, but always too many days before saturday.


  • Tony diNovo
  • Registratie: Maart 2004
  • Laatst online: 05-06-2025
squaddie schreef op 31 mei 2004 @ 20:47:
[...]

Die 0 had er neergezet om het een en ander te kunnen testen er had moeten staan: var cookieValue = cookieValue = now.setTime(now.getTime() + 1000 * 60 * 60 * 168);
Ik dacht ook al... hier klopt iets niet! :)

Ik ben ook inderdaad aan het testen, en kan zo snel nog niet vinden wat er niet klopt... vreemd. Te meer omdat ik deze zelfde constructie al eens gemaakt heb. Ik zal eens kijken of ik die kan vinden...

http://specs.tweak.to/9537