Susanne Jäger: document.write() - warum ersetzt das alles?

Beitrag lesen

Hallo Thomas,

ahm, hier is mal der richtige quelltext:


<html>

<head>
<link rel="stylesheet" href="style2.css2" taype="text/css">
<script type="text/javascript">
function set_style() {
  if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion.substring(0,1)) == "4"))
   document.open(); document.write('<link rel="stylesheet" href="style2.css" type="text/css">'); document.close();
  else document.open(); document.write('<link rel="stylesheet" href="style.css" type="text/css">'); document.close();
}
</script>
</head>

<body bgcolor=CB6526 leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" onLoad="set_style();"> ...


also wird die function doch beim laden er seite aufgerufen und somit bevor das alles "gerendert" ist, oder verstehe ich das falsch?

warum schreibst du das ganze überhaupt in ne Funktion? Du kannst doch direkt im Head-bereich dein script - document.write unterbringen, spätestens dann kannst du auch den ganzen open/close Kram loswerden, dessen sinn ich eh nicht verstehe.

Dann fehlt dir mindestens ein Satz geschweifte Klammern, im if-Zweig hast du zwei anweisungen untergebracht und spätestens dann musst du klammern.

Abgesehen davon würde ich den else-Zweig weglassen und das Stylesheet für 'vernünftige' browser regulär in den Code schreiben. Dabei kannst du Netscape 4 mit @import oder media="all" ausschliessen. Das hat den Vorteil, dass die javascript-Abhängigkeit nur bei NN4 besteht - und der kann ohne Javascript eh kein CSS - und für alle anderen die Formatierung nicht vom aktivierten JavaScript abhängig ist.

Gruß Susanne