Dag mensen,
Ik zag eens een script, waarmee je bezoekers een stijl kunt laten kiezen. Je
kunt op een bepaalde pagina een stijl selecteren, en dit blijft door middel
van een cookie op alle pagina's hetzelfde. Het probleem is echter dat dit op
alle pagina's binnen die map zo is. Dus als je in "../algemeen/index.php"
een stijl kiest, blijft dit zo op "../algemeen/inhoud.php" en
"../algemeen/nogiets.php". Maar ga je naar "../contact/index.php" is de
standaardstijl weer geactiveerd. Het cookie lijkt je voorkeur dus op te
slaan voor een bepaalde map, in plaats van voor alle pagina's binnen het
domein.
Mijn wens is dat je vanaf iedere pagina een stijl kunt kiezen, die
geactiveerd is zolang je op het domein blijft en tot je eventueel een andere
kiest.
Dit is de code in de pagina:
<head>
<link
rel="stylesheet"
href="stijl/oranje.css"
type="text/css"
title="Oranje"
>
<link
rel="alternate stylesheet"
href="stijl/blauw.css"
type="text/css" title="Blauw"
>
<link
rel="alternate stylesheet"
href="stijl/zwartwit.css"
type="text/css"
title="Zwartwit"
>
<script
type="text/javascript"
src="http://www.example.com/scripts/config.js"
>
</script>
</head>
<body onload="init()">
<script
type="text/javascript"
>
SetTheme();
</script>
[ inhoud ]
<img
onclick='SetStyleSheet("Oranje");'
title="Oranje stijl instellen"
src="design/or-ico.gif"
alt="Oranje"
>
<img
onclick='SetStyleSheet("Blauw");'
title="Blauwe stijl instellen"
src="design/bl-ico.gif"
alt="Blauw"
>
<img
onclick='SetStyleSheet("Zwartwit");'
title="Zwart-wit stijl instellen"
src="design/zw-ico.gif"
alt="Zwartwit"
>
</body>
Dus wanneer je een bepaalde stijl kiest, bijvoorbeeld blauw, gaat dit goed
als je in die map blijft. Ga je naar een andere map is de standaard oranje
stijl weer geactiveerd. Je moet dus per map aangeven welke stijl de
bedoeling is, terwijl ik wil dat je dat voor het gehele domein maar één keer
hoeft te doen.
.../algemeen/index.php [kies blauw]
.../algemeen/pagina2.php [blijft blauw]
.../algemeen/pagina3.php [blijft blauw]
.../anderemap/index.php [weer oranje]
Het script dat ik gebruik is het volgende:
function SetStyleSheet(newtitle)
{
SetStyleSheetInternal(newtitle);
}
function SetStyleSheetInternal(newtitle)
{
if (!document.getElementsByTagName)
{
return;
}
var i;
var savedtitle = '';
var links = document.getElementsByTagName("link");
if (!newtitle)
{
newtitle = savedtitle = ReadCookie("wanl-css", false);
}
if (!newtitle)
{
newtitle = GetPreferredStyleSheet();
}
var activesheet = null;
for (i = 0; i < links.length; i++)
{
var a = links[i];
var rel = a.getAttribute('rel');
var title = a.getAttribute('title');
if (rel.indexOf("style") != -1 && title)
{
a.disabled = true;
if (title == newtitle)
{
activesheet = a;
}
}
}
if (activesheet)
{
activesheet.disabled = false;
}
if (newtitle != savedtitle)
{
CreateCookie("wanl-css", newtitle, 365, false);
}
}
function GetActiveStyleSheet()
{
if (!document.getElementsByTagName)
{
return null;
}
var i;
var links = document.getElementsByTagName("link");
for(i = 0; i < links.length; i++)
{
var a = links[i];
var rel = a.getAttribute('rel');
var title = a.getAttribute('title');
if (rel.indexOf("style") != -1 && title && !a.disabled)
{
return title;
}
}
return null;
}
function GetPreferredStyleSheet()
{
if (!document.getElementsByTagName)
{
return null;
}
var i, a;
var links = document.getElementsByTagName("link");
for (i = 0; i < links.length; i++)
{
a = links[i];
var rel = a.getAttribute('rel');
var title = a.getAttribute('title');
if (rel.indexOf("style") != -1 && rel.indexOf("alt") == -1 && title)
{
return title;
}
}
return null;
}
function CreateCookie(name,value,days,useLang)
{
var langString = "";
var cookie = name + langString + "=" + value + ";";
if (days)
{
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
cookie += " expires=" + date.toGMTString() + ";";
}
cookie +=
document.cookie = cookie;
}
function ReadCookie(name, useLang)
{
var langString = "";
var nameEQ = name + langString + "=";
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;
}
function SetTheme()
{
SetStyleSheetInternal();
return true;
}
function init()
{
SetStyleSheetInternal();
}
Zou iemand met kennis het script willen aanpassen waardoor het voor het
gehele domein werkt, in plaats van alleen een map?
Alvast hartelijk dank!
Groetjes Martin.

Likes:

Quote