CSS ändern?

nex_m

Erfahrenes Mitglied
Hi
Muss jetzt mal nachfragen, weil es leider nicht funktioniert was ich vor habe.
Mein Problem: ich brauche eine Browserabfrage und je nach Browser soll ein anderes style sheet eingebunden werden.

Ich hab das jetzt mal so gemacht:
Code:
<html>
<head>
	<link rel="stylesheet" type="text/css" href="css.css">
	<script type="text/javascript">
	<!--

	function check()
	{
	if(navigator.appName=="Microsoft Internet Explorer")
		document.write('<link rel="stylesheet" href="css.css" type="text/css">')
	else
		document.write('<link rel="stylesheet" href="style.css" type="text/css">')
	}
	

	//-->
	</script>
</head>
<body onload="check">
.....


aber wie schon gesagt funktioniert es überhaupt nicht?
Wäre klasse wenn jemand eine Idee oder Lösung zu meinem Problem hat

MFG
 
Versuchs mal so: Du hast im <head> folgende Zeile stehen:
Code:
<link href="" type="text/css">
Deine Funktion führst du dann onLoad aus, wobei du dann jeweils anstatt deiner document.write()-Anweisung direkt auf die Eigenschaft href des <link>-Tags zugreifst. So etwa:
Code:
document.getElementsByTagName["link"][0].href = "style.css";
Dann musst du die Funktion noch onLoad aufrufen.

mfg

split
 
..Mhm..danke schon mal für die Hilfe. Leider funktionierts noch nicht.

Also ich habs mal jetzt so geändert wie du es vorgeschlagen hast:
Code:
<head>
	<link href="" type="text/css">
	<script type="text/javascript">
	<!--
	function check()
	{
	if(navigator.appName=="Microsoft Internet Explorer")
		document.getElementsByTagName["link"][0].href = "css.css";
	else
		document.getElementsByTagName["link"][1].href = "style.css";
	}
</head>
<body onload="check">

Stimmt vll was mit dem Rest des Codes nicht

MFG
 
Habs jetzt so halbwegs hinbekommen (sprich für den IE funktionierts), aber wieder auf nem anderen Weg:

Code:
<head>
	<LINK REL="stylesheet" HREF="main.css" TYPE="text/css">

   	<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
      	<!--

      	var Zeile, CSSFile;

      	if ((navigator.appName=="Microsoft Internet Explorer")
        &&(parseInt(navigator.appVersion.charAt(0))>=4))
      	{
      	CSSFile="css.css";
      	}

      	if ((navigator.appName=="Netscape")
        &&(parseInt(navigator.appVersion.charAt(0))>=4))
      	{
      	CSSFile="style.css";
      	}

      	Zeile="<LINK REL=\"STYLESHEET\" HREF=\""+CSSFile+"\" TYPE=\"text/css\">";
      	document.write(Zeile);

      	//-->
      	</SCRIPT>

</head>

Leider läufts nicht mit z.B Netscape
Wo liegt das Problem?

MFG
 
Hallo nex_m,

das erste Script ist prinzipiell in Ordnung, wenn auch einige Fehler drin sind. So müsste es gehen:
Code:
    ...
    <head>
    <link rel="stylesheet" href="cssOhneJS.css" type="text/css">
    <script type="text/javascript">
    <!--
    function check()
    {
      if(navigator.appName=="Microsoft Internet Explorer")
    	document.getElementsByTagName("link")[0].href = "css.css";
      else
    	document.getElementsByTagName("link")[0].href = "style.css";
    }
    //-->
    </script>
    </head>
    <body onload="check">
    ...
Du solltest m.E. im LINK-Element als Verweisziel eine CSS-Datei (cssOhneJS.css) benennen, die dann aktiviert wird, wenn JavaScript abgeschaltet ist.

Mit dem Ausdruck document.getElementsByTagName("link") wird ein Obkekt-Array aller LINK-Elemente angelegt und im Script wird davon ausgegangen, dass das LINK-Element mit dem Verweis auf die externe CSS-Datei das erste LINK-Element in deinem HTML-Dokument und somit auch in diesem Array ist. Da bei Arrays immer von 0 an gezählt wird, musst du also beim Zuweisen des Verweiszieles immer den Index 0 benutzen.

Übrigens gibt es in CSS auch Browserweichen ...
 

Neue Beiträge

Zurück