Verschiedene CSS Files anbieten

  • Seite 3 von 5
23.12.2007 01:26
avatar  green
#31 RE: Verschiedene CSS Files anbieten
avatar
Mitglied

..mal 'ne ganz blöde frage dazu: gibt es bei Javascript wie bei PHP einen Ablauf von oben nach unten? (bin ein echter JS dummie:-) )
der Style-Link steht ja oberhalb der Funktion...


 Antworten

 Beitrag melden
23.12.2007 10:42
avatar  ( Gast )
#32 RE: Verschiedene CSS Files anbieten
Gast
( Gast )

@wolf.andres: Äh ja, kleiner Fehler im Script... Es wurde kein Style gesetzt wenn kein Cookie vorhanden war. Anbei ist die geänderte Version.

Grüße Sabine

<script language="Javascript">
var a = new Date();
a = new Date(a.getTime() +1000*60*60*24*365);
var styles = new Array();
styles[0] = 'style.css';
styles[1] = '....';
var foundstyle = false;
if(document.cookie) {
var c = document.cookie;
while(true) {
var i1 = c.indexOf('=');
var i2 = c.indexOf(';');
if(i2 < 0)
i2 = c.length;
var cookiename = c.substring(0, i1);
var cookiewert = c.substring(i1+1, i2);
var i3 = cookiename.lastIndexOf(' ');
if(i3 > -1)
cookiename = cookiename.substring(i3 + 1);
if(cookiename == 'style') {
try {
var n = parseInt(cookiewert);
document.write('<link id="style" type="text/css" rel="stylesheet" href="' + styles[n-1] + '">');
foundstyle = true;
}
catch(err) {}
break;
}
if(c.length > i2)
c = c.substring(i2+1);
else
break;
}
}
if(!foundstyle)
document.write('<link id="style" type="text/css" rel="stylesheet" href="style.css">');


function change_style(n) {
document.getElementById('style').href = styles[n-1];
document.cookie = 'style=' + n + '; expires=' + a.toGMTString() + ';';
return;
}
</script>
<noscript>
<link id="style" type="text/css" rel="stylesheet" href="style.css">
</noscript>


 Antworten

 Beitrag melden
23.12.2007 10:43
#33 RE: Verschiedene CSS Files anbieten
avatar
Mitglied

Sorry, das war eben ich.
Vor lauter 'Cookies löschen' beim Ausprobieren, war ich jetzt nicht mehr eingeloggt ;-)


 Antworten

 Beitrag melden
23.12.2007 20:32
#34 RE: Verschiedene CSS Files anbieten
avatar
Mitglied


Hallo Sabine99.
Du bist echt absolut 1A!!!
Du begeisterst mich immer wieder mit Deinen Ideen und Deiner Unterstützung!

Ich finde Dein Script einfach Klasse und wenn es 100%ig funktioniert, ist das auch gut für alle User, die sich dann nicht immer Fragen müssen warum wieder etwas nicht funktioniert.

Also nochmals Danke dafür.

Gruss
Wolf

24.12.2007 16:04 (zuletzt bearbeitet: 24.12.2007 16:05)
#35 RE: Verschiedene CSS Files anbieten
avatar
Mitglied
In Antwort auf:
Hallo Sabine99,
habe Dein Super-Script in meinem Forum ausprobiert.

Es tritt ein merkwürdiger Effekt auf.

Wenn alle "Temporären Internetdateien" und alle "Cookies" gelöscht sind und das Forum abgemeldet ist, funktioniert kein "Design-Wechsel".
Hat man sich ersteinmal angemeldet, funktioniert alles tadellos!
Man kann sich wieder abmelden und es funktioniert dann ebenfalls!

Liegt hier ein Problem mit den Cookies vor?
Wann wird ein Cookie vom Forum gesetzt?
Wenn man sich anmeldet oder schon bei Aufruf der Forumseite?

Gruss
Wolf


Im Firefox kann ich komischerweise das Design immer wechseln. Im IE tritt bei mir aber auch das Phänomen auf, dass der Styleswitcher erst nach einem Login funktioniert. Wenn man das beheben könnte, wäre super, wenn nicht, dann geht's immerhin recht gut.

Ich selbst habe den Styleswitcher auch mit einer DropDown-Box zur Auswahl und unter einer Domain in einem Frame funktioniert es auch nicht.


@wolf.andres: Wie hast du es hinbekommen, dass der Design-Wechsler auch ohne Anmeldung im IE funktioniert?
Und kleine Anmerkung: Wenn man bei dir das Design im Firefox wechselt und gleich danach wieder Designauswahl anklickt, erscheint bei mir
Not Found - The requested URL / Designauswahl was not found on this server..
Ich habe als Linkangabe einfach eine "#" gesetzt, dann wird keine Seite gewechselt.

 Antworten

 Beitrag melden
25.12.2007 21:46 (zuletzt bearbeitet: 25.12.2007 21:46)
#36 RE: Verschiedene CSS Files anbieten
avatar
Mitglied

Hallo WolverineX.

Danke für den Hinweis mit der DropDown Box,
habe ich gleich in meinem Forum geändert!

Zu Deinen Fehler:
Hast Du den letzten Beitrag von Sabine99 (23.12.2007 10:42) gelesen.

Hier geht es um den Fehler, den Du beschreibst.
Ich hatte vorher den gleichen Fehler festgestellt.
Allerdings in allen 4 Browsern.

Ist das Script bei Dir richtig eingetragen?
Kopiere das Script am besten mit dem FireFox.
Beim Internet Explorer wird durch die Pre-Rahmen-Formatierung des Scriptes der Zeilenumbruch nicht kopiert!
Kann sich hier ein Fehler eingeschlichen haben?


Gruss
Wolfgang
27.12.2007 15:13
#37 RE: Verschiedene CSS Files anbieten
avatar
Mitglied

Hallo wolf.andres!

Mein Beitrag kam dadurch zustande, dass andere auch diesen Fehler haben. Sonst wäre er mir vielleicht nicht einmal richtig aufgefallen. Hatte bisher nur bemerkt, dass das Skript im Internet Explorer nicht funktioniert. Habe nach dem Lesen dieser Beiträge mich mal im IE eingelogggt und siehe da, es ging auf einmal!

Habe jetzt nochmal getestet, wie sich die Browser verhalten:
Firefox: Styleswitcher immer benutzbar
Internet Explorer: Styleswitcher nur nach Login benutzbar
Opera: Styleswitcher nur nach Login benutzbar

Habe das Script mit Firefox kopiert, benutze eigentlich nie andere Browser, nur um Kompatibilität zu prüfen. Kontrolliere nun mal das Skript auf seine Richtigkeit.

Danke für die Antwort!


 Antworten

 Beitrag melden
27.12.2007 17:51 (zuletzt bearbeitet: 27.12.2007 17:57)
#38 RE: Verschiedene CSS Files anbieten
avatar
Mitglied
Jetzt funktioniert's!

Alle Browser können nun den Style auch ohne Login ändern.

Wahrscheinlich lag es daran, dass das Skript einen Text mit dem Stylenamen oder so etwas ausgibt.

Zitat von sabine99

function change_style(n) {
document.getElementById('style').href = styles[n-1];

document.getElementById('heading').innerHTML = 'Style ' + n;

/* Cookie setzen */
document.cookie = 'style=' + n + '; expires=' + a.toGMTString() + ';';
return;
}



und später...:

<h1 id="heading">Style 1</h1>




Ohne die Ausgabe wird der Style nicht permanent gesetzt und ändert sich wieder nach einem neuen Seitenaufruf. Habe die betreffende Textausgabe dann ausgeblendet mit style="visibility:hidden;" oder style="display:none;" (Keine Ahnung mehr, ist ja aber auch egal!).


Mit Teilen aus dem Skript von wolf.andres hat es nun funktioniert, da ohne die Überbleibsel dieser Text-Ausgabe das Skript wohl in "allen" Browsern funktioniert.


Großes Lob an sabine99 und wolf.andres!!!


Mein eingebautes Skript:

Head:
In Antwort auf:

<!-- Styleswitcher Head Anfang -->

<script language="JavaScript" type="text/javascript">
var a = new Date();
a = new Date(a.getTime() +1000*60*60*24*365);
var styles = new Array();
styles[0] = 'http://server/style1.css';
styles[1] = 'http://server/style2.css';
styles[2] = 'http://server/style3.css';

var foundstyle = false;

if(document.cookie) {
var c = document.cookie;
var foundstyle = false;
/* Cookievariablen ermitteln */
while(true) {
var i1 = c.indexOf('=');
var i2 = c.indexOf(';');
/* Falls Semikolon am Ende fehlt */
if(i2 < 0)
i2 = c.length;
var cookiename = c.substring(0, i1);
var cookiewert = c.substring(i1+1, i2);
/* Leerzeichen vor Name entfernen */
var i3 = cookiename.lastIndexOf(' ');
if(i3 > -1)
cookiename = cookiename.substring(i3 + 1);
/* Style festlegen */
if(cookiename == 'style') {
try {
var n = parseInt(cookiewert);
document.write('<link id="style" type="text/css" rel="stylesheet" href="' + styles[n-1] + '">');
foundstyle = true;
}
catch(err) {}
break;
}
/* Nächstes Cookie oder aufhören */
if(c.length > i2)
c = c.substring(i2+1);
else
break;
}
}

/* Standardstyle im Falle von Fehler oder keinem gewählten Style */
if(!foundstyle) document.write('<link id="style" type="text/css" rel="stylesheet" href="http://server/style1.css">');

function change_style(n) {
document.getElementById('style').href = styles[n-1];
/* Cookie setzen */
document.cookie = 'style=' + n + '; expires=' + a.toGMTString() + ';';
return;
}
</script>

<noscript>
<!-- Standardstyle falls Scripts nicht aktiviert sind -->
<link id="style" type="text/css" rel="stylesheet" href="http://server/style1.css">
</noscript>

<!-- Styleswitcher Head Ende -->





Body:
In Antwort auf:

<!-- Styleswitcher Box Anfang -->

<form>
<select class="tarea" size="1" name="Styleswitcher" onChange="javascript:parent.location = this.form.Styleswitcher.options[this.form.Styleswitcher.selectedIndex].value;">
<option value="">Style &auml;ndern...</option>
<optgroup label="Styles">
<option value="javascript:change_style(1)">Style 1</option>
<option value="javascript:change_style(2)">Style 2</option>
<option value="javascript:change_style(3)">Style 3</option>
</optgroup>
</select>
</form>

<!-- Styleswitcher Box Ende -->





 Antworten

 Beitrag melden
30.12.2007 16:42 (zuletzt bearbeitet: 30.12.2007 16:51)
#39 RE: Verschiedene CSS Files anbieten
avatar
Mitglied
Habe das Skript noch ein wenig erweitert. Nun wird bei ausgeschaltetem JavaScript kein Styleswitcher mehr angezeigt. Wer will, kann stattdessen einen Link anzeigen, der auf einen Beitrag verweist.

Im Template Obere Leiste zwischen <HEAD> und </HEAD>:
<script type="text/javascript">
function switcher_on() {
document.getElementById('switcher').style.display=''
}
</script>

Somit wird der Switcher bei eingeschaltetem JavaScript aktiviert.


<body marginheight="0" marginwidth="0" leftmargin="0" rightmargin="0" topmargin="0" bottommargin="0" onload="switcher_on()">

onload="switcher_on()" sorgt dafür, dass die Funktion auch aufgerufen wird (automatisch).


<div id="switcher" style="display:none;">
[Styleswitcher-Skript]
</div>
<!-- optional, falls ein Platzhalter mit Link zu Beitrag eingefügt werden soll -->
<noscript>
<a href="http://123484.homepagemodules.de/t245f10-Style-aendern.html">[Styleswitcher]</a>
</noscript>


<div id="switcher" style="display:none;"> und </div> sind erforderlich, damit der Quellcode darin ausgeblendet wird.

[Styleswitcher-Skript] ist der Quellcode für die Dropdown-Box oder was auch immer.
Das Grüne ist optional, falls statt dem Styleswitcher bei deaktiviertem JavaScript ein Link zu einem Beitrag mit Erklärung eingefügt werden soll. Andernfalls wird nichts angezeigt.


Erklärung:
Der Styleswitcher ist standardmäßig ausgeblendet. Ist JavaScript aktiviert, wird er eingeblendet. Ist JavaScript nicht aktiviert, dann bleibt er ausgeblendet. (Er würde sowieso nicht funktionieren.)
Der Quellcode zwischen <noscript> und </noscript> wird angezeigt, wenn JavaScript nicht aktiviert ist.

 Antworten

 Beitrag melden
03.01.2008 17:03
#40 RE: Verschiedene CSS Files anbieten
avatar
Mitglied

Hat eigentlich schon jemand eine Lösung dafür gefunden, dass das Skript auch in IFrames funktioniert?


 Antworten

 Beitrag melden
07.01.2008 18:51 (zuletzt bearbeitet: 07.01.2008 18:51)
#41 RE: Verschiedene CSS Files anbieten
avatar
Mitglied
Wieso, geht es in einem iframe nicht??

 Antworten

 Beitrag melden
07.01.2008 18:59
#42 RE: Verschiedene CSS Files anbieten
avatar
Mitglied

Nein, leider nicht. :-(

Man kann zwar etwas auswählen, es ändert sich aber nichts.


 Antworten

 Beitrag melden
07.01.2008 19:06
#43 RE: Verschiedene CSS Files anbieten
avatar
Mitglied


Hast du ein Link wo es nicht funktioniert?


 Antworten

 Beitrag melden
07.01.2008 19:47 (zuletzt bearbeitet: 07.01.2008 19:48)
#44 RE: Verschiedene CSS Files anbieten
avatar
Mitglied
z.B. über eine Domain: http://florians-forum.de.tt

oder zum Vorführ-Zweck eingebettet in meine Homepage (nicht der Normalfall): http://florianzier.fl.ohost.de/?iframe=h...epagemodules.de


Bitte gib Bescheid, wenn du es angesehen hast! Ich benutze nämlich einen Framebreaker, damit von meiner Domain der IFrame um die Seite entfernt wird.
Leider unterstützen Dienste wie http://www.joynic.com und http://www.nic.de.vu die Domain-Weiterleitung nicht richtig, sondern zeigen immer nur die Domain an, obwohl in den Einstellungen anders angegeben!
Der Framebreaker ist also nur damit der IFrame der zur Domain-Anzeige generiert wird, aufgelöst wird und der Styleswitcher funktioniert. :-)
Bei deaktiviertem JavaScript funktioniert der Framebreaker zwar nicht mehr, aber wen interessiert's, da der Styleswitcher dann ja auch nicht funktioniert!


Falls es irgendwie in einem IFrame zu machen ist, wäre das natürlich auch nicht schlecht, da ich dann meine Domain angezeigt lassen kann und der dadurch generierte IFrame nichts mehr unbrauchbar macht.

 Antworten

 Beitrag melden
09.01.2008 09:24 (zuletzt bearbeitet: 09.01.2008 09:25)
#45 RE: Verschiedene CSS Files anbieten
avatar
Mitglied
Das Skript so wie ich es oben geschrieben hatte sollte auch im iframe funktionieren.

Das Problem bei dir liegt hier:

<select class="tarea" size="1" name="Styleswitcher" onChange="javascript:parent.location = this.form.Styleswitcher.options[this.form.Styleswitcher.selectedIndex].value;">

Es ist nicht gestattet auf den übergeordneten Frame zuzugreifen, da er von einer anderen Domain kommt, daher der "Zugriff verweigert" Fehler (Same Origin Policy)

 Antworten

 Beitrag melden
Bereits Mitglied?
Jetzt anmelden!
Mitglied werden?
Jetzt registrieren!