Robert Hilbe: Eine Seite mit bestimmtem Stylesheet aufrufen

Hallo zusammen

Ich habe ein ziemlich kniffliges Problem:
Ich möchte beim Aufrufen einer Webseite bestimmen, welches Stylesheet zur Darstellung der verlinkten Seite benutzt wird. Gibt es eine Möglichkeit "durchzugeben", welches der auf der neuen Seite zur Verfügung stehenden Stylesheetsdas verwendet werden soll. Eventuell ist dies mit Javascript und einem Cookie möglich. Da ich aber kein Programmierer bin, wäre ich für den Code sehr dankbar!

Vielleicht kann der "Styleswitcher", der auf einer Website zwischen verschiedenen CSS-Files wählt, als Grundlage dienen:

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;
    }
  }
}

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

function getPreferredStyleSheet() {
  var i, a;
  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
    if(a.getAttribute("rel").indexOf("style") != -1
       && a.getAttribute("rel").indexOf("alt") == -1
       && a.getAttribute("title")
       ) return a.getAttribute("title");
  }
  return null;
}

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 expires = "";
  document.cookie = name+"="+value+expires+"; path=/";
}

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;
}

window.onload = function(e) {
  var cookie = readCookie("style");
  var title = cookie ? cookie : getPreferredStyleSheet();
  setActiveStyleSheet(title);
}

window.onunload = function(e) {
  var title = getActiveStyleSheet();
  createCookie("style", title, 365);
}

var cookie = readCookie("style");
var title = cookie ? cookie : getPreferredStyleSheet();
setActiveStyleSheet(title);

Liebe Grüsse
Robert

  1. Hallo Robert"

    Ich habe ein ziemlich kniffliges Problem:
    Ich möchte beim Aufrufen einer Webseite bestimmen, welches Stylesheet zur Darstellung der verlinkten Seite benutzt wird. Gibt es eine Möglichkeit "durchzugeben", welches der auf der neuen Seite zur Verfügung stehenden Stylesheetsdas verwendet werden soll. Eventuell ist dies mit Javascript und einem Cookie möglich. Da ich aber kein Programmierer bin, wäre ich für den Code sehr dankbar!

    Hhhhmmm, wieso benutzt Du keine Klassen? Da bräuchtest Du dieses komplizierte JS nicht.

    lg, Jan

  2. hi,

    Ich möchte beim Aufrufen einer Webseite bestimmen, welches Stylesheet zur Darstellung der verlinkten Seite benutzt wird. Gibt es eine Möglichkeit "durchzugeben", welches der auf der neuen Seite zur Verfügung stehenden Stylesheetsdas verwendet werden soll.

    ja, die gibt es. du kannst einen parameter an den link anhängen, der der aufgerufenen seite sagt, welches stylesheet sie verwenden soll.
    dazu muss die verarbeitende logik aber natürlich in der aufgerufenen seite selber stecken. dort kannst du den parameter z.b. mit einer serverseitigen technik abfragen, und dem entsprechend den <link>-tag für die einbindung des stylesheets modifizieren.

    gruss,
    wahsaga

  3. Hi Robert,

    wie wärs mit PHP?

    <?php

    if($_GET['style'] =="rot")
         echo '<link rel="stylesheet" type="text/css" href="/src/red.css" title="Rotes CSS" />';

    if($_GET['style'] =="gruen")
         echo '<link rel="stylesheet" type="text/css" href="/src/gruen.css" title="Grünes CSS" />';

    ?>

    So muss der Link aussehen:

    <a href="link.htm?style=rot">Link</a>

    Wenn du im Google nach STyleswitcher suchst, findest du seehr viele Quellen.

    HTH

    Werner