webForumDet fria alternativet

Cookie

8 svar · 274 visningar · startad av webbmannen

webbmannenMedlem sedan dec. 1999826 inlägg
#1

Kommer skriptet nedan att sätta en kaka på besökarens dator om denne bockat i checkbox-rutan som finns med på sidan, och om inte, så stängs bara fönstret?

Mao. har jag skrivit rätt?

<script language="JavaScript">
<!--
function writecookie()
{
datum = new Date();
datum.setTime(datum.getTime()+(1000*60*60*24*90));
document.cookie="KAKAN=God;expires="+datum.toGMTString();
}

	function checkandclose()
	{
	If(document.form.checkbox.checked==true)
	writecookie();
	document.close;
	{
	Else
	}
	document.close;
	}
//-->
</script>

/webb

spangoMedlem sedan juni 20008 205 inlägg
#2

Nej.

<script language="JavaScript">
<!--
function writecookie()
{
datum = new Date();
datum.setTime(datum.getTime()+(1000*60*60*24*90));
document.cookie="KAKAN=God;expires="+datum.toGMTString();
}
function checkandclose()
{
if(document.form.checkbox.checked==true)writecookie();
else [b]top[/b].close();
}
//-->
</script>

------------------
-- spango
Ingen älskar en man med skägg.

webbmannenMedlem sedan dec. 1999826 inlägg
#3

Det känns som om man utelämnar lite så som du skrivit Spango :o

För att förtydliga ytterligare och vara säker på att förstå:

Med en onLoad-funktion så öppnas ett litet fönster när besökaren går in på indexsidan. I detta fönster så får man lite info som man sedan ska kunna slippa se nästa gång man går in. Detta genom att man bockar för checkbox-rutan som finns med. Om man INTE bockar i och stänger fönstret med stäng-knappen så kommer rutan upp nästa gång också.

Du har använd ordet top på ett sätt som jag inte känner till. Är det detta som "do the trick" :q

/webb

webbmannenMedlem sedan dec. 1999826 inlägg
#4

Testat utan önskat resulat :(

Jag har läst på under dagen och vet nu vad "top" är och hör hemma i hierarkin, men min kod gör inte som jag vill.

Det går inte att stänga popupfönstret med stängknappen (som har onClick="checkandclose();" med sig) - vad är fel?

<html>
<head><title>popupsidan</title>

<script language="JavaScript">
<!--
function writecookie()
{
datum = new Date();
datum.setTime(datum.getTime()+(1000*60*60*24*90));
document.cookie="KAKAN=God;expires="+datum.toGMTString();
}

function checkandclose()
{
If(document.form0.bock.checked==true)
writecookie();
top.close();
}
Else
{
top.close();
}
//-->
</script>

</head>
<body>
<font face="verdana,arial" size="2">
<b>Observera</b> att flertalet av våra produktbilder är "klickbara" och kan ses i större format.
</font>
<form name="form0">
<center>
<input type=button value="Stäng detta fönster" onClick="checkandclose();">
</center><br>
<input type=checkbox name="bock">
<font face="verdana,arial" size="1">
Kryssa i här om du inte vill se detta meddelande igen.
</font>
</form>
</body>
</html>

Så lite kod borde inte få bråka så :l

/webb

jiikooMedlem sedan juli 20007 inlägg
#5

hejsanär svaret

------------------
okioki

webbmannenMedlem sedan dec. 1999826 inlägg
#6

Kul :(

spangoMedlem sedan juni 20008 205 inlägg
#7

Ajajaj! Du stavar if med stort i.
if skare va, inte If...

[tillägg]
En generell cookiehanteringsfunktion eller två är alltid väl spenderad tid.
Efter att ha läst igenom ditt inlägg noggrannare kom jag fram till följande. I popupen:

/******************
bakaKaka(): Skapar en kaka som består antal angivet antal dagar
Anropas: bakaKaka("Kakans namn", "Kakans innehåll", "Kakans livslängd i dagar");
Exempel: bakaKaka("Namn", "Spango", 365);
******************/
function bakaKaka(titel, str, dagar){
	str = escape(str);//URL-kodar alla konstiga tecken
	titel = escape(titel);
	var expstring = "";
	if(dagar){
		dagar *= 1000 * 60 * 60 * 24;
		
		var exp = new Date();
		exp.setTime(exp.getTime() + dagar);
		expstring = "; Expires=" + exp.toGMTString();
		}
	document.cookie = titel + "=" + str + expstring;
	}

/******************
bakaKaka(): Hämtar en kaka med angivet namn
Returnerar: Kakans innehåll om något finns, annars tom sträng
Anropas: smakaKaka("Kakans namn");
Exempel: if(smakaKaka("Namn")) document.write("Hej " + smakaKaka("Namn") + "!");
******************/
function smakaKaka(titel){
	titel = escape(titel) + "=";
	if(document.cookie.indexOf(titel) == -1) return "";
	
	kaka = document.cookie.substr(document.cookie.lastIndexOf(titel));
	kaka = kaka.substr(titel.length);
	slut = (kaka.indexOf(';') == -1) ? kaka.length : kaka.indexOf(';');
	kaka = kaka.substring(0, slut);
	
	return unescape(kaka);
	}

function checkandclose()
{
if(document.form0.bock.checked)
bakaKaka("VISA_POPUP", "nix", 3650);
top.close();
}

och sen när man ska bestämma om poppupen ska öppnas eller ej:

if(smakaKaka("VISA_POPUP") != 'nix')//öppna popupen
else // gör nåt annat

[/tillägg]

------------------
-- spango
Ingen älskar en man med skägg.

[Redigerat av spango den 28 jul 2000]

[Redigerat av spango den 29 jul 2000]

webbmannenMedlem sedan dec. 1999826 inlägg
#8

[bakläxa] webb skriver if med liten bokstav 100 ggr [/bakläxa]

[ny läxa] se till att begripa spangos script ordentligt (varenda stavelse) [/ny läxa]

Stort tack spango :)

Redigerat till litet "s" i spango ;)

/webb

[Redigerat av webbmannen den 28 jul 2000]

spangoMedlem sedan juni 20008 205 inlägg
#9

Tackar webbis, ja blir så varm i hjärtat när jag ser nån stava mitt namn med litet "s"! ;)

Angående scriptet:
Det är inte så krångligt (men jag vart tvungen att uppdatera bakaKaka() lite - lägg in den nya versionen på din sida).

bakaKaka() tar två eller tre argument. Det första är namnet på kakan, det andra är kakans värde, och det tredje, frivilliga, argumentet är livslängden på kakan i dagar.
Först URL-kodas namn och värd med escape(), eftersom kakor inte får innehålla mellanslag eller semikolon (och URL-kodning är det rekommenderade sättet att undvika dessa tecken).
Sen instantieras ett Date-objekt med för aktuell tid.
Efter det omvandlas dagarna som kakan ska leva (om några skickats) till millisekunder. Efter det läggs dessa millisekunder till det aktuella datumet.
Sen bakas bara allt ihop till en sträng som motsvarar en kaka...

smakaKaka() söker igenom document.cookie efter argumentet som skickats, följt av likhetstecken, och returnerar strängen efter det, till närmaste semikolon eller, om inget finns, strängens slut, avkodat. Om document.cookie ser ut så här:
BLAH=yak; BLAINE=pain; ALLTHESTUFF=The%20same
så returneras "yak" om man skickar "BLAH" som argument, skickar man "BLAINE" får man tebax "pain", och skickar man "ALLTHESTUFF" får man tebax "The same" (eftersom %20 är URL-koden för mellanslag). Alla som läst "The Waste Lands" av Stephen King vet vad jag pratar om ;)

Mer om cookies

------------------
-- spango
Ingen älskar en man med skägg.

132 ms totalt · 3 externa anrop · v20260731065814-full.3ab8d573
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)