taalkeuze onthouden

Status
Niet open voor verdere reacties.

RobMan

Gebruiker
Lid geworden
3 okt 2007
Berichten
126
Hoi!

Ik heb aan het begin van mijn website (dus index.html) een taalkeuze gemaakt. Heel simpel met gewoon de vlaggen van de landen en daarachter de bijbehorende link naar het betreffende taaldeel van de website.

Is er een script dat deze <a href=""> keuze kan zien en dit bijvoorbeeld wegschrijft naar een cookie zodat mensen slechts 1 keer de keuze hoeven te maken?
 
je zult dan een functie aan moeten maken waarin het volgende gebeurt:
- Cookie wegschrijven
- Doorlinken naar pagina (document.location = \'./Nieuwe link.html\'; )

Cookie wegschrijven kun je hier vinden (zie eerste hit)

M.v.g.
JB'tje

p.s. beetje script:
Code:
JavaScript:
function do_cookie( lang, url )
{
 // schrijf cookie weg..



 // Link door naar volgende site
  document.location = url;
}


HTML:
<a href="#" onClick="cookie('Nederlands', ./'index.html'); return fals;">Ga naar de Nederlandse pagina, klik hier</a>
 
Laatst bewerkt:
Hoi!

Is dit de makkelijkste oplossing?
Als dat zo is dan ga ik me maar verdiepen in cookies en javascript (heb in beide nog geen ervaring dus vandaar)...
 
Hallo,

de vraag is meer "is dit de enige oplossing"... waarna ik zal antwoorden: met javascript wel (voor zover ik weet)

Als je gebruik maakt van een server side script (b.v. PHP) zal het nog iets makkelijker zijn om met cookies te gaan werken (naar mijn mening dan...)
Een andere oplossing die met een serverside script mogelijk is, is door de taal te binden aan het IP. Dan zul je gebruik moeten maken van een database (MySQL)

De link die ik je gegeven heb geeft genoeg voorbeelden en uitleg over hoe het allemaal moet, dus ik denk dat dat wel zal lukken :P (anders heeft google nog tig andere links :D)

Als je problemen tegekomt hoor ik het wel...
M.v.g.
JB'tje
 
Ik ga je suggestie waarschijnlijk wel proberen denk ik. Is het gelijk een goede reden om me te gaan verdiepen in JavaScript (waar ik toch lange tijd al over nadacht om te gaan doen) :)

bedankt!
 
Hoi!

Ik ben me gaan verdiepen in de link die je gaf en het heeft me een beetje op weg geholpen al heb ik nu meer vragen dan hiervoor ;)

Deze functie werd gegeven om een cookie te maken en weg te schrijven:

PHP:
function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

Stel, ik wil een cookie maken voor het Nederlandse deel van de site:

HTML:
<a href="#" onClick="createCookie('nl','..........',360)"><img src="vlag nl.gif" border="0"></a>
Nu wordt er, als het goed is, een cookie gemaakt wanneer klik met als naam 'nl' en geldig voor 360 dagen. Maar wat voor waarde moet die cookie krijgen (op de plek van '..........')?

Het inlezen van cookie's moet ik me nog in verdiepen want daar heb ik ook nog geen flauw idee over!
 
ik zou er eerder zoiets van maken:

HTML:
<!--- name,value,days --->

<a href="#" onClick="createCookie('TaalKeuze','nl',360)"><img src="vlag nl.gif" border="0"></a>

<!--- de naam van het koekje is nu 'TaalKeuze' en via die naam laad je t straks ook in ;) --->
 
Aha, en de value van de cookie is dus bijvoorbeeld:
of nl (nederlands)
of de (duits)
of eng (engels)?

en de value van de cookie met naam taalkeuze is dan gekoppeld aan een link van het taaldeel van de site?
 
Dit is de functie om de cookie's te lezen:

PHP:
function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

Volgens de uitleg erbij (Set c to the cookie to be checked) moet
PHP:
var c = ca[i];
dus worden:
PHP:
var taalkeuze = ca[i];
De rest van de functie is volgens mij alleen maar bedoeld om de cookie te vinden. Is er ook een functie om iets te doen met de gegeven waarde uit de cookie 'taalkeuze'?


bron: http://www.quirksmode.org/js/cookies.html
 
weet niet precies wat je idee was, maar wil je 3x dezelfde pagina maar dan met verschillende text?

In alleen javascript? Je gaat dan zoiets doen:

HTML:
<!--- javascript --->
als cookie's value  = nederlands dan
   document.location="www.second-thought.nl/nederlands/index.html";
anders als cookie's value = duits dan
   document.location="www.second-thought.nl/duits/index.html";
anders als cookie's value = engels dan
   document.location="www.second-thought.nl/engels/index.html";
ende als

heb expres geen javascript gebruikt, ga lekker zelf vogelen, maar het is een voorbeeld ;)


[edit]start-topci verkeerd gelezen, het is heel goed mogelijk in JS[/edit]
 
Laatst bewerkt:
Ja zoals in je voorbeeld staat.
Het is dus wel mogelijk?

dan ga ik het maar 'vogelen'

Ik neem aan dat het script dat bezig gaat met de values van de cookie in de <head> moet omdat wanneer er een cookie is, mensen gelijk doorverwezen moeten worden zonder dat de rest van de pagina wordt geladen?
 
Laatst bewerkt:
Ik ben op internet aan het zoeken maar zie onderhand door de scriptbomen het bos niet meer :confused:

Het enige wat ik nog nodig heb is een if-deel voor de volgende functie die de bezoeker naar een bepaalde link stuurt afhankelijk van de value.
Is die ergens op internet te vinden?
PHP:
function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

Ik heb het onderstaande (dit is een deel) gevonden op internet maar ik snap één stukje niet (voor de rest is het volgens mij een simpelere variant op hierboven):
PHP:
// page to go to if cookie exists
go_to1 = "http://www.perlscriptsjavascripts.com";
go_to2 = "...";
go_to3 = "...";



function readCookie(cookieName){
    var start = document.cookie.indexOf(cookieName);
    if (start == -1){ 
        document.cookie = "seenit=yes; expires=" + ged(num_days);
    } else {
        window.location = go_to1;
    }
}


readCookie("seenit");
de if statement is volgens mij om een cookie te maken maar dat hoeft niet.
Ik denk dat alleen dat if gedeelte herschreven moet worden zodat de cookie gelezen wordt en dan:
if value=nl, dan window.location = go_to1;
else value=en, dan window.location = go_to2;
else value=de, dan window.location = go_to3;

Weet iemand zo hoe dat geschreven moet worden?

edit: oja trouwens, moet het stukje readCookie("seenit"); dan gekoppeld worden aan een onLoad event?
 
Laatst bewerkt:
De makkelijkste manier is om niet de taalkeuze op te slaan in de cookie, maar de URL... dat scheelt weer enkele If...else...

Met het volgende scriptje kun je doen wat je graag wilt...
De init functie wordt gebruikt om te controleren OF er een cookie geset is... indien dat zo is wordt je doorgelinkt, anders gebeurt er niets...

M.v.g.
JB'tje

Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript">
<!--
var Cookies = {
  init: function () {
  var allCookies = document.cookie.split('; ');
    for (var i=0;i<allCookies.length;i++) {
      var cookiePair = allCookies[i].split('=');
      this[cookiePair[0]] = cookiePair[1];
    }
  },
  create: function (name,value,days) {
    if (days) {
      var date = new Date();
      date.setTime(date.getTime()+(days*24*60*60*1000));
      var expires = "; expires="+date.toGMTString();
    }else var expires = "";
      document.cookie = name+"="+value+expires+"; path=/";
    this[name] = value;
  },
  erase: function (name) {
    this.create(name,'',-1);
    this[name] = undefined;
  }
};
Cookies.init();


function saveCookie(lang) {
alert(lang);
  Cookies.create('Taal', lang, 365);
  document.location = lang;
}

function init() {
  if(Cookies['Taal'])
  {
    document.location = Cookies['Taal'];
} }

window.onload = init;
// -->
</script>


</head>

<body>

<br /><a href="javascript:saveCookie('./NL/index.html')">Nederlandse site bekijken</a>
<br /><a href="javascript:saveCookie('./EN/index.html')">Engelse site bekijken</a>
<br /><a href="javascript:saveCookie('./FR/index.html')">Franse site bekijken</a>
<br />
<br /><a class="page" href="javascript:alert('document.cookie is now\n\n'+Cookies['Taal']);">document.cookie</a>.


</body>
</html>


Ik neem aan dat het script dat bezig gaat met de values van de cookie in de <head> moet omdat wanneer er een cookie is, mensen gelijk doorverwezen moeten worden zonder dat de rest van de pagina wordt geladen?
p.s. in de code die ik meestuur is dat niet noodzakelijk, aangezien er pas naar een cookie gekeken wordt als de pagina geladen is..... je kunt ook
window.onload = init;
vervangen door
Dan zal er direct gecontroleerd worden of er een cookie is, en zo ja direct doorsturen (zonder de rest te laden... als dat niet al gebeurt was...)
 
Wow geweldig! echt enorm bedankt! :thumb:

Wanneer ik wat meer weet over JavaScript ga ik nog zeker eens in deze code kijken en snappen wat er staat maar voor nu neem ik het zoals het is :)

Ik heb nog één klein vraagje.
Het is namelijk zo dat ik ook een link op mijn site wil hebben die terug gaat naar het taalkeuzemenu. Logischerwijs moet er tegelijkertijd met die link de cookie verwijderd worden. Nu is er wel een stukje code voor maar ik weet niet precies hoe ik die moet aanroepen.
PHP:
  erase: function (name) {
    this.create(name,'',-1);
    this[name] = undefined;
  }

Dus:
HTML:
<a href="index.html" onClick="......">terug naar taalkeuzemenu</a>
wat moet er in de onClick?
 
Hallo,

Het volgende voldoet...
Let op: je moet de var = Cookie met alle subfuncties erin wel op die pagina hebben staan (makkelijkst is dus om dat in een .js bestandje te zetten en te includeren....)

door het volgende in de header te zetten....
<script type="text/javascript" src="Cookies.js"></script>

M.v.g.
JB'tje

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript">
<!--
var Cookies = {
init: function () {
var allCookies = document.cookie.split('; ');
for (var i=0;i<allCookies.length;i++) {
var cookiePair = allCookies.split('=');
this[cookiePair[0]] = cookiePair[1];
}
},
create: function (name,value,days) {
if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
}else var expires = "";
document.cookie = name+"="+value+expires+"; path=/";
this[name] = value;
},
erase: function (name) {
this.create(name,'',-1);
this[name] = undefined;
}
};
Cookies.init();


function Go_home() {
if(Cookies['Taal'])
{
Cookies.erase('Taal');
}
document.location = './JSCookie.html';
}

// -->
</script>


</head>

<body>
<a href="javascript:Go_home();">Terug naar taaloverzicht</a>
</body>
</html>
 
:thumb: Alles werkt! :thumb:

Ik ga alleen
window.onload = init;
nog even vervangen door
zoals je suggestie was omdat nu het zo is dat je een flits ziet van het taalkeuzemenu bij tweede keer bezoek en dat oogt wat slordig..en ja..het oog wil ook wat natuurlijk ;)
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan