• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Image abhänig von Webstile laden

Sorry, da musste ich gerade sehr lachen. Ist absolut nicht böse gemeint. Ich finde es ziemlich gut, wie sehr du dich da immer „durchbeißt“. Das zeigt auch dieser Thread wieder. Du bleibst echt am Ball. Ich hatte nur schon geplant, das hier zu zitieren:



Ich habe den Thread ehrlich nicht komplett gelesen und habe auch keine Lust, das nachzuholen. Dazu würde ich jedenfalls wieder sagen: Wenn es mit JS nicht hinhaut, warum nicht einfach ohne JS?

Jedenfalls sprichst du mit der Browser-Einstellung jetzt die dritte Variante an.

Ganz kurz dazu: Das ist meines Erachtens der korrekte Weg (Stichwort: „alternate stylesheet“), aber ich muss auch sagen: Die Möglichkeit kennt keine Sa–… kennt niemand.

(Ob es dafür einen „Event-Handler“ gibt, um die Einstellung mit Cookies zu synchronisieren… Ich habe keine Ahnung.)

Oder habt ihr es hier so gedeichselt, das rel="alternate stylesheet" einfach mit dem rel="stylesheet" zu vertauschen? Wenn das laufen würde, wäre ich sehr beeindruckt, muss ich sagen.

das habe ich nun nicht verstanden... was du meinst.
Und das ich da die 3 Variante habe.. ja mag sein.
Ich habe versucht aufzugreifen was man mir an Tipps gegeben hat.
Das bin ich schon schuldig.
Aber ich bin dennoch nicht zum Ziel gekommen.

ich habe für die Zeile
Code:
$_SESSION["style"] = $_POST["style"];
die Meldung
Notice: Undefined index: style
und gleich darunter wird
super SESSION = Heisse-Fantasien (orginal)
angegeben. Das verwirrt mich... scheint mir aber der Fehler zu sein. Oder? Heisse-Fantasien wäre der Standard

Code:
<?php
$_SESSION["style"] = $_POST["style"];
?>

<?php
if ($_SESSION = "Heisse-Fantasien (orginal)")

{
echo 'super ';
echo 'SESSION = ',$_SESSION;
}

else

{
echo $_SESSION;
}

?>
 
Werbung:
Ich muss mermshaus recht geben. Mittlerweile ist mir auch nicht mehr klar was Du überhaupt für einen Style-Wechsel haben möchtest.

Die 3 Möglichkeiten die er anspricht sind folgende:

1. Auf der Webseite gibt es irgendwo einen Link oder eine Funktion wo man den Style wechseln kann. Wenn der Nutzer darüber einen anderen Style auswählt, wird einfach die per <link> eingebundene Datei geändert (per JavaScript). Welchen Style der Nutzer dabei auswählt, könnte in einer Session oder einem Cookie gespeichert werden.
2. Auf der Webseite gibt es irgendwo einen Link oder eine Funktion wo man den Style wechseln kann. Die zur Verfügung stehenden Styles sind als "alternative stylesheet"s über mehrere <link>-Element eingebunden. Wenn der Nutzer einen Style auswählt, wird lediglich der Stylesheet der gewählt wurde von "alternative" zu "gewählt" geändert. Welchen Style der Nutzer dabei auswählt, könnte in einer Session oder einem Cookie gespeichert werden.
3. Der Nutzer hat in seinem Browser die Möglichkeit zwischen verschiedenen Stylesheets zu wählen. Welche Styles zur Verfügung stehen, hat die Webseite über "alternative stylesheet"s angegeben. In diesem Fall muss die Webseite selbst gar nichts speichern. Welcher Style ausgewählt wurde, speichert der Nutzer ggfs. als Einstellung in seinem Browser.

Welchen Style-Wechsel willst Du nun also realisieren?

Die Antwort wäre wichtig bevor wir hier überhaupt weiter diskutieren.
 
Ich muss mermshaus recht geben. Mittlerweile ist mir auch nicht mehr klar was Du überhaupt für einen Style-Wechsel haben möchtest.

Die 3 Möglichkeiten die er anspricht sind folgende:

1. Auf der Webseite gibt es irgendwo einen Link oder eine Funktion wo man den Style wechseln kann. Wenn der Nutzer darüber einen anderen Style auswählt, wird einfach die per <link> eingebundene Datei geändert (per JavaScript). Welchen Style der Nutzer dabei auswählt, könnte in einer Session oder einem Cookie gespeichert werden.
2. Auf der Webseite gibt es irgendwo einen Link oder eine Funktion wo man den Style wechseln kann. Die zur Verfügung stehenden Styles sind als \"alternative stylesheet\"s über mehrere <link>-Element eingebunden. Wenn der Nutzer einen Style auswählt, wird lediglich der Stylesheet der gewählt wurde von \"alternative\" zu \"gewählt\" geändert. Welchen Style der Nutzer dabei auswählt, könnte in einer Session oder einem Cookie gespeichert werden.
3. Der Nutzer hat in seinem Browser die Möglichkeit zwischen verschiedenen Stylesheets zu wählen. Welche Styles zur Verfügung stehen, hat die Webseite über \"alternative stylesheet\"s angegeben. In diesem Fall muss die Webseite selbst gar nichts speichern. Welcher Style ausgewählt wurde, speichert der Nutzer ggfs. als Einstellung in seinem Browser.

Welchen Style-Wechsel willst Du nun also realisieren?

Die Antwort wäre wichtig bevor wir hier überhaupt weiter diskutieren.

Die Auswahl wird (am Bsp FF über Ansicht / Webstil) gewählt.
Und in einem Cookie gespeichert.
Das klappte auch alles wunderbar über die gewählte css-Datei.
Beim Problem zu beginn (mit einem gif) habe ich mich dann doch auf ein Hintergrund verlegt

Doch diesmal.... da ich verschiedene Wedgets von Amazon habe muss ich auf einigen Seiten.php anderes SQL-Feld verweisen.
In einem anderen Fall (ein Gästebuch in einem iFrame) werde ich wahrscheinlich auf einen anderes Unterverzeichnis verweisen müssen.
Und diese Entscheidung dachte ich mir ist am fexibelsten zu verarbeiten mit einer Variable die ich dann in einer if-Abfrage machen kann.


Sorry für all die Verwirrung.
 
Werbung:
Was hat das eine mit dem anderen zu tun? Wie erkennst Du das jemand unter Ansicht / Webstil den Style ändert?

wie weis ich ehrlich gesagt nicht.
Aber in dem Script das ich verwende wird der gewählte style in einem cookie gespeichtert so weit ist mir das bewusst.
Nun dachte ich es muss doch möglich sein diesen cookie-Wert an php zu senden.

Doch weis ich nicht wie ich diesen cookie-wert sende.
Und welcher gesendet werden muss.
 
Werbung:

sorry ich wollte es nicht ungefragt ein weiteres mal posten
Code:
 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);

doch das geht wohl so ohne weiteres nicht.
Also habe ich dann nach Lösungen gesucht und Vorschläge bekommen.
Doch die haben mir bisher nicht den gesuchten Erfolg gebracht. Vielleicht weil ich etwas falsch gemacht habe.?
 
Mmh, ja, da wird ein Cookie gesetzt. Welche Cookies aktuell für deine Seite gesetzt sind, kannst Du mit

PHP:
var_dump($_COOKIE);

auslesen. Der betreffende müsste "style" als Name haben. Damit kannst Du dann per

PHP:
$_COOKIE["style"]
auf dessen Wert zugreifen und damit machen was Du willst.

An PHP musst Du hier nichts senden. Wenn der Cookie per JavaScript gesetzt wird, ist er auch im PHP, sobald die Seite neu geladen wird, verfügbar.
 
das mit dem auslesen funktioniert super.
Und auch die Variabel ist da.

Aber die Variabel wird nicht gewechselt wenn der Style gewechselt wird.
Auch nach dem neu laden nicht.

UpDate

Sorry... da scheint eine Verzögerung beim speichern drin zu sein.
Der wert wird gewechselt

vielen dank
 
Zuletzt bearbeitet:
Werbung:
Wie sollte die Variable sich auch wechseln? Aktuell wird die Funktion dafür nur beim Laden der Seite ausgeführt:

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

Du müsstest das Ganze nun also auch alle X Sekunden nochmal ausführen um die Daten zu aktualisieren solange die Seite nicht neugeladen wird.

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

Nach Neuladen sollte es aber schon funktionieren.
 
Zurück
Oben