Felix Riesterer: Frage zum Wiki-Artikel „cookies“

Beitrag lesen

problematische Seite

Lieber Ed,

schön, dass sich mal jemand die Mühe macht, ein formal einwandfreies Posting zu verfassen. Das liest man sehr gerne. Daher antworte ich Dir auch zu dieser Stunde.

Dein Link zur „problematischen Seite“ verweist in unser Wiki. Liegt das Problem denn wirklich dort? Ich glaube, eher nicht... Mal sehen.

Das Script switcher.js sieht so aus:

Warum hast Du es denn nicht auf einer Beispielseite im Internet zum live-Ansehen bereitgestellt? Wenn Du tatsächlich hier schon mitgelesen hast, dann wird Dir sicher nicht entgangen sein, dass solche live-Beispiele wie z.B. auf jsFiddle eine bessere Möglichkeit bieten Dein Problem nachzuvollziehen.

function setActiveStyleSheet(title) {
  var i, a, main;
  for (i = 0; (a = document.getElementsByTagName("link")[i]); i++) {
    if (
      a.getAttribute("rel").indexOf("style") != -1 &&
      a.getAttribute("title")
    ) {
      a.disabled = true;
      if (a.getAttribute("title") == title) a.disabled = false;
    }
  }
}

Wo hast Du diesen Code her? Das schreibst Du nicht. Ist der gecopypasted?

<link href="css/lila.css" rel="stylesheet" type="text/css" title="lila">
<link href="css/gruen.css" rel="alternate stylesheet" type="text/css" title="gruen">
<link href="css/rosa.css" rel="alternate stylesheet" type="text/css" title="rosa">
<link href="css/schwarz.css" rel="alternate stylesheet" type="text/css" title="schwarz">
<script src="js/switcher.js" type="text/javascript"></script>
<script src="js/cookie.js" type="text/javascript"></script>
<script src="js/onload.js" type="text/javascript"></script>

Warum meinst Du, dass die Browser-eigenen Bedienelemente zum Einstellen des Wunsch-Styles nicht genügen? Hast Du es einmal mit denen probiert? Schaltet der Browser dann auch wieder auf das Default-Stylesheet zurück, wenn man einen Link anklickt?

Man möge mir verzeihen, wenn ich als Newbe hier, meinen Hilferuf an falscher Stelle gepostet haben sollte.

Die Stelle war schon richtig. Aber die gebotenen Infos waren wie bei Neulingen üblich etwas ungeschickt dargeboten und nicht vollständig.

Was ich persönlich zuerst ändern würde, ist die Verwendung eines Cookies. Mir (wie gesagt mir persönlich) liegt es näher, solcherlei Dinge mittels localStorage im Browser zu hinterlegen, weil es erstens kein Verfallsdatum dazu speichert, und weil zweitens die Daten bequemer erreichbar sind. Vergleiche einmal:

function getPreferredStyleSheet () {
  return localStorage.getItem("preferredStyleSheet");
}

function setPreferredStyleSheet (title) {
  localStorage.setItem("preferredStyleSheet", title);
}

Wie Du sehen kannst, ist das Ablegen und Holen einer „mal eben“ im Browser des Seitenbesuchers hinterlegten Information so viel bequemer lösbar, als das Auseinanderfrickeln der Cookiedaten.

Woran Dein Vorhaben scheitert, kann ich nicht sagen, weil ich kein live-Beispiel habe, an dem ich Deinen Code nachvollziehen kann. Daher nur diese Überlegungen und Rückfragen von mir.

Liebe Grüße

Felix Riesterer