zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Javascript & Ajax
Seite neu laden Styleswitcher für mehrere Stylesheets (Stylesets)

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 05.09.2006, 11:14
Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 19.02.2004
Beiträge: 49
captain befindet sich auf einem aufstrebenden Ast
Standard Styleswitcher für mehrere Stylesheets (Stylesets)

Haalo da draußen,

ich habe folgendes problem: ich möchte via styleswitcher dem user die möglichkeit geben, mehrere stylesheets unabhängig voneinander zu aktivieren/deaktivieren. also z.B.:

Stylesheets für Schriftgröße: klein | standard | groß

Stylesheet für Kontrast: hoch | standard

Stylesheet für Layout: flexibel | fix

und das ganze sollte natürlich auch noch in einem cookie gespeichert werden ...


hat da jemand erfahrung damit?

danke für euren input,

grüße, captain
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 05.09.2006, 11:33
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 25.03.2004
Beiträge: 1.843
RoToRa wird schon bald berühmt werden
Standard

Hast du Lust auf eine Grundsatzdiuskussion?

Zitat:
Zitat von captain
Stylesheets für Schriftgröße: klein | standard | groß
Wozu? Jeder (grafische) Browser hat diese Funktionalität schon eingebaut.

Zitat:
Stylesheet für Kontrast: hoch | standard
Das ist schon sinnvoller, aber theoretisch auch nicht nötig, denn
a) Dein Standard-Stylesheet sollte schon vorher guten Kontrast haben
und
b) auch hier kann der Benutzer selber entweder einfach den Stylesheet ausschalten (du benutzt doch semantisch sinnvolles HTML?) oder die eigenen Farben benutzen.

Zitat:
Stylesheet für Layout: flexibel | fix
Auch hier sehe ich den Sinn nicht. Welche Vorteile hat ein fixes Layout, wenn du eh ein flexibeles anbietest?

Zitat:
und das ganze sollte natürlich auch noch in einem cookie gespeichert werden
Und mit JavaScript implementiert? (Sonst würdest du nicht im JS-Forum posten, oder?)

D.h. der Benutzer muss "nur" entweder Cookies *oder* JavaScript deaktiviert haben, und prompt kann er die "Features", die mit großer Mühe einbaust, nicht verwenden.

Robin
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 05.09.2006, 12:30
Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 19.02.2004
Beiträge: 49
captain befindet sich auf einem aufstrebenden Ast
Standard

tztztztz, das wollte ich eigentlich vermeiden

ich kenne sämtliche argumente pro/contra in bezug auf solche techniken...
aber von mir aus (obwohl ich eigentlich keine zeit habe ...):

Zitat:
Wozu? Jeder (grafische) Browser hat diese Funktionalität schon eingebaut.
Das stimmt natürlich. Aber kann man vorraussetzen, daß der user auch weiß, wo diese einstellungen zu machen sind? mein ehrenwerter vater (z.b.) weiß das sicher nicht...


Zitat:
a) Dein Standard-Stylesheet sollte schon vorher guten Kontrast haben
und
b) auch hier kann der Benutzer selber entweder einfach den Stylesheet ausschalten (du benutzt doch semantisch sinnvolles HTML?) oder die eigenen Farben benutzen.
natürlich! aber ich produziere ja die seite nicht ausschließlich für sehbehinderte personen, sondern auch für menschen ohne behinderung (das wird bei der produktion von barrierefreien webseiten nämlich sehr gerne vergessen, daß es auch menschen ohne behinderungen gibt!) von einem ansprechenden design mal ganz abgesehen. deswegen: guter kontrast in der standardansich, aber die MÖGLICHKEIT geben, den kontrast trotzdem noch zu erhöhen.

und wenn der benutzer selber das stylesheet ausschaltet bekommt er trotzdem standardmäßig nur schwarze schrift auf weißem grund. manche user brauchen aber eine invertierte ansicht. außerdem wissen viele user nicht, wie man ein stylesheet ausschaltet (siehe oben, mein DAD). u.s.w.u.s.f.


Zitat:
Auch hier sehe ich den Sinn nicht. Welche Vorteile hat ein fixes Layout, wenn du eh ein flexibeles anbietest?
ich würde natürlich am liebsten ein layout anbieten mix max-width/min-width, aber da das im IE nicht funktioniert biete ich auch ein fixes layout an (für hohe auflösungen, ich habe z.b. 1920*1200px).

Zitat:
Und mit JavaScript implementiert? (Sonst würdest du nicht im JS-Forum posten, oder?)
jawoll! weil dann die seite nicht jedesmal neu geladen werden muß! ABER: zu deiner beruhigung: es soll natürlich noch eine PHP-fallback variante geben.

Zitat:
du benutzt doch semantisch sinnvolles HTML?
also darauf antworte ich nicht. das nehme ich persönlich ...


für die allgemeinheit: es ist immer leicht vorschnell zu urteilen und zu kritisieren. es geht bei barrierefreiheit nicht darum, nur behinderte menschen zu erreichen, sondern möglichst alle: mensch wie maschine. einem blinden ist es nämlich völlig egal, wie eine seite grafisch gestaltet ist, einem sehenden aber eventuell nicht. deswegen sind styleswitcher eine möglichkeit, daß der user die seite ein wenig an seine bedürfnisse anpassen kann. ABER ER MUSS JA NICHT!!! das ist das gute daran. aber wenn es nur einem menschen hilft, daß er innerhalb der seite mit einem klick die schriftgröße ändern kann, habe ich schon gewonnen ...

viele grüße vom captain!

p.s. weiß trotzdem noch jemand einen rat?
Mit Zitat antworten
  #4 (permalink)  
Alt 05.09.2006, 13:24
Benutzerbild von Siegfried
Erfahrener Benutzer
XHTMLforum-Mitglied
 
Registriert seit: 11.08.2006
Beiträge: 465
Siegfried befindet sich auf einem aufstrebenden Ast
Standard

Hi,

ich hatte mal eine Zeitlang einen Styleswitcher in JavaScript, ich glaube, er liegt noch auf meinem Webspace: http://www.rorkvell.de/styleswitcher.js

Ich bin wieder davon abgekommen. Aus mehreren Gründen. Zunächst mal habe ich diese Style-Alternativen per "alternate stylesheet" eingebaut. Firefox und ich glaube Opera haben so von Haus aus die Möglichkeit, umzuschalten. Und für den Firefox gibt es eine Extension, die diese Wahl permanent macht. Sehr empfehlenswert.

Dann musste ich feststellen, daß Konqueror und Safari, die beide auf KHTML basieren, das "alternate" ignorieren und per Zufall die verschiedenen Styles der verschiedenen alternate stylesheets durcheinander mischen. Kein schöner Anblick!

Ich habe desweiteren festgestellt, daß Konqueror und Safari beide wie der IE im http-Header "text/html" anfordern, der Firefox hingegen mit höherer Priorität "application/xhtml+xml". Also habe ich die alternate stylesheets aus den html-Dateien rausgenommen und in den xhtml-Dateien dringelassen. Damit hat sich dann ganz nebenbei die Notwendigkeit für ein JavaScript styleswitcher erübrigt, weil der FF das ja von Haus aus kann. Was Opera macht, weiß ich nicht.

Prinzipiell bin ich sehr für alternate stylesheets. Aber anscheinend ist das bei heute üblichen Clients nicht so einfach.
Mit Zitat antworten
  #5 (permalink)  
Alt 05.09.2006, 14:04
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 25.03.2004
Beiträge: 1.843
RoToRa wird schon bald berühmt werden
Standard

Schon gut, schon gut

Der Grund, warum ich auf die Grundsätze eingangen war, war die Tatsache das eine konkrete Frage fehlte und es mir schein, als seinst du ein Anfänger, dem eine Grundsatzdiskussion nicht schaden könnte. Jetzt weiß ich aber, das du sicher kein Anfänger bist

Das Problem ist das aber immer noch eine konkrete Frage fehlt...

Nein, ich habe keine Erfahrung mit Style-Switchern, aber ich könnte als jemand, der sich gut mit JavaScript auskennt, wahrscheinlich trotzdem seitenweise über das Thema schreiben, nur will ich das nicht.

Vielleicht wenn du konkreter angibst was du wissen willst, bzw. was überhaupt dein Wissensstand bzgl. JavaScript im allgemeinen ist, könnte ich Dir besser vielleicht helfen.

Robin
Mit Zitat antworten
  #6 (permalink)  
Alt 05.09.2006, 14:40
Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 19.02.2004
Beiträge: 49
captain befindet sich auf einem aufstrebenden Ast
Standard

@ siegfried

danke für deine antwort. das styleswitcher-js auf deiner seite ist glaube ich das von alistapart. das ist zwar gut, kann aber keine stylesets verarbeiten, sprich die unterscheidung zwischen z.b. fontgrößen und kontrast.

@ RoToRa

danke für das einsehen

meine konkrete frage war, wie ich es am besten angehe, daß man eben solche stylesets unabhängig voneinander verarbeiten kann (siehe anfangserklärung). ich bin leider kein javascript profi (deswegen auch das posting), verstehe aber die syntax und beschäftige mich gerade mit dom-scripting (empfehlenswertes buch: http://www.domscripting.com/book/)

aber ich verlange natürlich kein fertiges script. mich hat es nur gewundert, daß ich über google überhaupt nix passendes gefunden habe. nur für php gibt es einen styleswitcher der meinen ansprüchen genügen würde (http://www.contrastsweb.com/switcher/v2/).

ich bräuchte einen denkansatz, wie ich z.b. den styleswitcher von alistapart so umbauen könnte, das er für meine ansprüche funktioniert.

hier nochmal der link: http://www.alistapart.com/stories/alternate/

grüße vom captain
Mit Zitat antworten
  #7 (permalink)  
Alt 05.09.2006, 14:50
Benutzerbild von Siegfried
Erfahrener Benutzer
XHTMLforum-Mitglied
 
Registriert seit: 11.08.2006
Beiträge: 465
Siegfried befindet sich auf einem aufstrebenden Ast
Standard

Hi,

stimmt. Ja, das stammt ursprünglich von AListApart. Ich hab's geringfügig geändert. Und ja, es ist einfach dazu da, vorhandene alternate stylesheets auszutauschen.

Wenn Du nur vorhandene Styles verändern willst, wie z.B. Fontgröße, dann schau doch mal bei EFA vorbei:
http://www.einfach-fuer-alle.de/

Die haben, glaube ich, Sowas realisiert. Zumindest mit der Schriftgröße. Selber habe ich mit Sowas keine Erfahrung. Speziell die Schriftgröße ist bei mir sowieso nicht festgezurrt, so daß das mit Browsermitteln problemlos änderbar ist, und andere Dinge, wie z.B. spezielle Kontrastreiche Versionen, mache ich halt doch lieber über komplette alternate stylesheets.

Übrigens, nur so eine Idee: Es müsste doch reichen, wenn Du die Fontgröße des body Elements per JavaScript änderst. Zumindest dann, wenn alle Fontgrößen relativ dazu definiert sind.

Geändert von Siegfried (05.09.2006 um 14:54 Uhr)
Mit Zitat antworten
  #8 (permalink)  
Alt 05.09.2006, 15:08
Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 19.02.2004
Beiträge: 49
captain befindet sich auf einem aufstrebenden Ast
Standard

@siegfried

jaja, wenn man den wald vor lauter bäumen nicht mehr sieht ... ich habe vor lauter styleswitcher-gedöns völlig übersehen, daß ich so einfache dinge wie fontgröße auch direkt über javascript ansteuern kann. das war eine gute idee!! danke!

ich werde das mal ausprobieren...

grüße, captain
Mit Zitat antworten
  #9 (permalink)  
Alt 06.09.2006, 10:50
Benutzerbild von Siegfried
Erfahrener Benutzer
XHTMLforum-Mitglied
 
Registriert seit: 11.08.2006
Beiträge: 465
Siegfried befindet sich auf einem aufstrebenden Ast
Standard

Immer gerne

Übrigens sorry, wenn ich die nächste Zeit hier nicht mehr so aktiv sein kann. Bin momentan beruflich sehr im Stress, und das kann noch etliche Wochen so weiter gehen.
Mit Zitat antworten
Sponsored Links
  #10 (permalink)  
Alt 07.09.2006, 10:13
Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 19.02.2004
Beiträge: 49
captain befindet sich auf einem aufstrebenden Ast
Standard

So, nun habe ich ein wenig an dem bestehendem script von alistapart rumgeschraubt und möchte es euch a) nicht vorenthalten und b) könntet ihr mir vielleicht tipps geben, wie ich das script eleganter/sauberer schreiben kann, da ich ja leider kein javascript-profi bin.

das script habe ich so umgebaut, daß ich nun mehrere stylesheets unabhängig voneinander ansprechen kann. aber schaut selbst.

here we go:

Code:
/************* Cookie Verwaltung **************/
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;
}
// ----------------------------------------------
// StyleSwitcher functions written by Paul Sowden
// http://www.idontsmoke.co.uk/ss/
// - - - - - - - - - - - - - - - - - - - - - - -
// For the details, visit ALA:
// http://www.alistapart.com/stories/alternate/

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

function getActiveStyleSheet() {
  var i, a, styleName1, styleName2;
  var zaehler1 = 0;
  var zaehler2 = 0;
  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
    if(a.getAttribute("rel").indexOf("stylesheet") != -1 && a.getAttribute("title") && !a.disabled) {
		zaehler1++;
	}
  }
  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
    if(a.getAttribute("rel").indexOf("stylesheet") != -1 && a.getAttribute("title") && !a.disabled) {
		zaehler2++;
		if(a.getAttribute("title").indexOf("set1") != -1){
			styleName1 = a.getAttribute("title");
		}
		else if(a.getAttribute("title").indexOf("set2") != -1){
			styleName2 = a.getAttribute("title");
		}
		if (zaehler2 == zaehler1){
			//alert(styleName1+'/'+styleName2);
			return styleName1+'/'+styleName2;
		}
		
	}
  }
  return null;
}

window.onload = function(e) {
	var cookie = readCookie("style");
	var title = cookie ? cookie : null;
	if(cookie){
		if (title != 'null'){
			var cookieInhalt = new Array();
			cookieInhalt = title.split('/');
			eintraege = cookieInhalt.length;
			for(i=0;i<=eintraege-1;i++){
				if (cookieInhalt[i] != "undefined") {
				setActiveStyleSheet(cookieInhalt[i]);
				}
			}
		}
	}
}


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

ich habe eine funktionierende version auch nochmal als zip angehängt.

styleswitcher-multiple.zip

danke schonmal für den input,

grüße,

captain
Mit Zitat antworten
Sponsored Links
Antwort

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Stylesheets ignorieren Tim40 CSS 6 11.04.2008 00:51
Stylesheets: Medientypen Despairing CSS 4 10.06.2006 19:58
Mehrere Stylesheets Tex CSS 4 24.10.2005 20:35
Styleswitcher dietzi CSS 2 10.10.2003 14:18
Wichtigkeit von Stylesheets H.Wiedow CSS 3 04.10.2003 22:25


Alle Zeitangaben in WEZ +2. Es ist jetzt 23:02 Uhr.