Archivlink: javarea.de Forum > JavaScript > Auf Grund eines Cookie-Eintrages ein bestimmtes CSS-File laden
Vollständigen Link anzeigen: javarea.de Forum > JavaScript > Auf Grund eines Cookie-Eintrages ein bestimmtes CSS-File laden

Pages: [1]

geschrieben von Gast am 04.04.2001 - 10:53
Hallo zusammen!
Ich habe ein kleines Problem!


Ich möchte gerne auf Grund eines Cookie-Eintrages entweder ein css-File (black.css) oder ein anders css-File (white.css) laden.
Der cookie-Eintrag heisst dementsprechend: black oder white.

Ist das was ich mir vorstelle überhaupt möglich?

Ich habs mal so zu lösen versucht:


<html>
<head>
<script language="JavaScript">
<!--
function getCSS() {
var css = getColor() + ".css";
return css; //Der Rückgabewert ist entweder "black.css" oder "white.css"!!!!
}

function getColor() {
var css;
if(document.cookie) {

css = document.cookie.substring(0,5);
}
else {
css = "black";
}

return css;
}
//-->
</script>

<link rel=stylesheet type="text/css" href="javascript:getCSS()">

</head>
<body>
</body>
</html>

Es scheint alles zu klappen, bis auf die Übergabe der Adresse für das CSS-File, via den return-Wert der js funktion!


Vielen Dank für eure Hilfe
Gruss Urs!

geschrieben von Gast am 04.04.2001 - 11:31
hi Urs,

so wird das nichts,du mußt zumindest einen Cookie setzen lassen,also ich kann mir das so vorstellen,indem du eine Auswahl machst ind der dann angegeben werden kann welches css er in Zukunft geladen haben will.

Also ein kleine Auswahlmöglichkeit.

oder wie hast du dir das genau vorgestllt....?? Ein cookie so wie in deinem Beispiel kann nicht funzen,da ich kein Möglichkeit habe zubestimmen welces file geladen werden soll.

ciao,
Klaus...

geschrieben von Gast am 04.04.2001 - 12:30
Also ich habe mir das folgendermassen gedacht!

Ein anderes HTML-File das im selben ordner ist, schreibt ein cookie mit dem inhalt black oder white.

Danach wird das file, welches ich gepostet habe geladen!
Dieses File soll nachher entweder black.css oder white.css laden, jeh nach dem was im cookie steht.
Funktioniert das nicht?

wie würde denn das ganze mit einer abfrage funktionieren?

P.s. Die werte die aus dem Cookie kommen stimmen, d.h. genau vor dem return-Befehl hat die variable css den wert, "black.css" oder "white.css"! Aber die übergabe an den link-Tag, via den return-wert funktioniert nciht!

geschrieben von Gast am 04.04.2001 - 13:16
nein so wie in deinem Beispiel geht das nicht,da kein Cookie gesetzt wird.Um einen Cookie setzen zukönnen,mußt du den Befehl getCookie nehmen.

Ich bin schon dabei ein Scriptchen zu schreiben.

Klaus...

geschrieben von Gast am 04.04.2001 - 13:25
Oh danke dir, verstehe zwar noch nicht ganz was du meinst, bin aber gespannt auf dein Script!

geschrieben von Gast am 04.04.2001 - 13:52
hi Urs,

also Extra nur für dich....

erstell dir 2 CSS Dateien mit einem normalen Beispeil wie:

black.css mit folgenden Inhalt:
body {background-color:black;}

white.css mit folgenden Inhalt:
body {background-color:white;}


dann kopierst du diesen Code in eine HTML Datei:

<SCRIPT LANGUAGE="JavaScript">
<!--
//Abfrage wie lange cookie gespeichert werden soll
var expDays = 30;
var exp = new Date();
exp.setTime(exp.getTime() + (expDays*24*60*60*1000));

function getCookieVal (offset) {
var endstr = document.cookie.indexOf (";", offset);
if (endstr == -1)
endstr = document.cookie.length;
return unescape(document.cookie.substring(offset, endstr));
}
//setzen des Cookies
function GetCookie (name) {
var arg = name + "=";
var alen = arg.length;
var clen = document.cookie.length;
var i = 0;
while (i < clen) {
var j = i + alen;
if (document.cookie.substring(i, j) == arg)
return getCookieVal (j);
i = document.cookie.indexOf(" ", i) + 1;
if (i == 0) break;
}
return null;
}
//suche cookie und übertrage die Daten
function SetCookie (name, value) {
var argv = SetCookie.arguments;
var argc = SetCookie.arguments.length;
var expires = (argc > 2) ? argv[2] : null;
var path = (argc > 3) ? argv[3] : null;
var domain = (argc > 4) ? argv[4] : null;
var secure = (argc > 5) ? argv[5] : false;
document.cookie = name + "=" + escape (value) +
((expires == null) ? "" : ("; expires=" + expires.toGMTString())) +
((path == null) ? "" : ("; path=" + path)) +
((domain == null) ? "" : ("; domain=" + domain)) +
((secure == true) ? "; secure" : "");
}

//Übergabe des cookies
var css = GetCookie('css');

if (css != null) {
switch (css) {
case 'black' : url = 'document.write(<link rel=stylesheet href=black.css> )'; // Angabe zur CSS
break;
case 'white' : url = 'document.write(<link rel=stylesheet href=white.css> )'; // Angabe zur CSS
break;
}
document.write(url);
}
//-->
</script>


Speichern von ausgewählten CSS Daten


<form>
<table>
<tr>
<td>geben Sie ihre gewünschte Farbe an:<br>
<input type=checkbox name="black" onClick="SetCookie('css', this.name, exp);">black<br>
<input type=checkbox name="white" onClick="SetCookie('css', this.name, exp);">white<br>
</td>
</tr>
</table>
</form>

fertig.......ich hoffe es entspricht deiner Vorstellung.

ciao,
Klaus...

<font face=verdana,arial size=1>[Dieser Beitrag wurde von Klaus am 05. April 2001 editiert.]</font>

geschrieben von Gast am 04.04.2001 - 15:39
Danke dir viel mal Klaus!!!
Hast mir echt geholfen!

Alleine wäre ich nicht auf die idee gekommen, dass man ein css-File aus einer js-Funktion heraus laden kann!

*********************************************
if (css != null) {
switch (css) {
case 'black' : url = 'document.write(&lt;link rel=stylesheet href=black.css&gt; )'; // Angabe zur CSS
break;
case 'white' : url = 'document.write(&lt;link rel=stylesheet href=white.css&gt; )'; // Angabe zur CSS
break;
}
document.write(url);
*********************************************

Schönen Abend wünscht
Urs

geschrieben von Gast am 04.04.2001 - 16:06
klar kannst du Style Sheet auch per JS auslagern und lesen bzw.schreiben ....

Wichtig ist nur das der Cookie auch geschrieben wird das auslesen ist dann kein Hit mehr........

also bis dann......

ciao,
Klaus


Powered by: JBB v.2.0.4 Copyright ©2000-2006, www.javarea.de.