validierungsproblem javascript
Ron
- javascript
Hallo Allesammt,
Habe folgendes Problem...
Beim Validieren meines Dokuments wird behauptet ich hätte kein <head>-Tag eingefügt. Habe ich natürlich...
Habe nun herausgefunden das die Ursache an meinem Javascript liegt welches im Headbereich sitzt.
Es einfach auszulagern hat nicht funktioniert. Dann funktioniert es nicht mehr.
Dachte das mir jemand sagen könnte wie ich es verändern muß damit es beim Validieren kein Problem gibt. Es muß was mit dem Maskieren zu tun haben...
Doctype= HTML 4.01 Transitional
Das Javascript ist folgendes:
<script type="JavaScript">
<!--
Laden();
if (Infopalette == "aus")
{
var CSSFile="/modules/shop/scripts/infoaus.css.view";
}
else
{
var CSSFile="/modules/shop/scripts/infoan.css.view";
}
var Zeile="<LINK REL="STYLESHEET" HREF=""+CSSFile+"" TYPE="text/css">";
document.write(Zeile);
//-->
</script>
Vielleicht kann mir jemand auf die Sprünge helfen.
Gruß Ron
Hi,
so wie ich das sehe überschreibst Du Dein gesamtes Dokument mit einer Zeile.
Dem "Dokument" fehlt dann zunächst ein HEAD-Tag, in Folge aber noch diverse andere Dinge die ein Browser von einem HTML-Dokument erwartet...;)
Gruss
Marcus
Hi Markus,
so wie ich das sehe überschreibst Du Dein gesamtes Dokument mit einer Zeile.
Dem "Dokument" fehlt dann zunächst ein HEAD-Tag, in Folge aber noch diverse andere Dinge die ein Browser von einem HTML-Dokument erwartet...;)
Verstehe ich nicht, was du damit genau meinst...
Wegen dem document.write ?
Du meinst das alles was vor document.write überschrieben wird?
Dann müsste der Validator doch auch meckern das kein Doctype angegeben ist, oder nicht?
Und wie würde ich das lösen können?
Gruß Ron
Hi,
so wie ich das sehe überschreibst Du Dein gesamtes Dokument mit einer Zeile.
nicht wenn Du document.write beim rendern verwendest
Gruesse, Joachim
klar, sorry zu schnell drüber geschaut.
Marcus
Bei mir gab es einen validierungsgfehler, als ich einen headbereich ohne html Inhalt hatte. Wenn noch nicht vorhanden, mach doch mal ein
<title>TollePage</title>
in den Headbereich.
Bei mir gab es einen validierungsgfehler, als ich einen headbereich ohne html Inhalt hatte. Wenn noch nicht vorhanden, mach doch mal ein
<title>TollePage</title>
in den Headbereich.
Ja, das ist alles schon vorhanden... Inhalt, Title etc.
Habe das nur wegelassen weil ich dachte das es eben an der Maskierung lim Javascript liegt....
Gruß Ron
hi,
Beim Validieren meines Dokuments wird behauptet ich hätte kein <head>-Tag eingefügt. Habe ich natürlich...
Wie _genau_ lautet die Meldung?
gruß,
wahsaga
hi,
Wie _genau_ lautet die Meldung?
Eigentlich das selbe wie auf Deutsch ;)
Line 36 column 6: end tag for element "HEAD" which is not open.
Vorher meckert er noch über meine eingebunden CCS-Dateien.
Error Line 35 column 86: document type does not allow element "LINK" here.
Der vollständigkeit halber der ganze entprechende Code:
<html>
<head>
<title>...</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script src="/modules/shop/scripts/shop.js.view" type="text/javascript" language="Javascript"></script>
<script language="JavaScript">
<!--
Laden();
if (Infopalette == "aus") {
var CSSFile="/modules/shop/scripts/infoaus.css.view";
}
else {
var CSSFile="/modules/shop/scripts/infoan.css.view";
}
var Zeile="<LINK REL="STYLESHEET" HREF=""+CSSFile+"" TYPE="text/css">";
document.write(Zeile);
//-->
</script>
<noscript>
<link rel="stylesheet" type="text/css" HREF="/modules/shop/scripts/infoan.css.view" TYPE="text/css">
<link rel="stylesheet" type="text/css" HREF="/modules/shop/scripts/inhalt.css.view" TYPE="text/css">
</noscript>
<link rel="stylesheet" type="text/css" href="/modules/shop/scripts/shop.css.view">
<link rel="stylesheet" type="text/css" href="/modules/shop/scripts/menue.css.view">
<link rel="stylesheet" type="text/css" href="/modules/shop/scripts/produkte.css.view">
<link rel="stylesheet" type="text/css" href="/modules/shop/scripts/links.css.view">
</head>
<body ....
Das ganze läuft über eine Java-Anwendung...
Gruß Ron
Hi,
<html>
Da fehlt schon mal der doctype.
<head>
[...]
<noscript>
Da noscript im head nicht erlaubt ist (und </head> sowie <body> optional sind), wird hier head implizit geschlossen und body geöffnet.
<link rel="stylesheet" type="text/css" HREF="/modules/shop/scripts/infoan.css.view" TYPE="text/css">
link ist im body nicht erlaubt
cu,
Andreas
hi,
Wie _genau_ lautet die Meldung?
Eigentlich das selbe wie auf Deutsch ;)
Nein.
Line 36 column 6: end tag for element "HEAD" which is not open.
Das bedeutet etwas vollkommen anderes, als das was du vorher sagtest:
Beim Validieren meines Dokuments wird behauptet ich hätte kein <head>-Tag eingefügt.
gruß,
wahsaga
Hallo,
<script language="JavaScript">
<!--
Laden();
if (Infopalette == "aus") {
var CSSFile="/modules/shop/scripts/infoaus.css.view";
}
else {
var CSSFile="/modules/shop/scripts/infoan.css.view";
}
var Zeile="<LINK REL="STYLESHEET" HREF=""+CSSFile+"" TYPE="text/css">";
document.write(Zeile);
//-->
</script>
Dieses Script kannst du auch auslagern.
<noscript>
<link rel="stylesheet" type="text/css" HREF="/modules/shop/scripts/infoan.css.view" TYPE="text/css">
<link rel="stylesheet" type="text/css" HREF="/modules/shop/scripts/inhalt.css.view" TYPE="text/css">
</noscript>
Wie gesagt ist noscript im Head nicht erlaubt, was ich für einen Fehler in der Spec halte. Das kannst du also einfach ignorieren, weil das sowieso jeder Browser unterstützt. Dann musst du allerdings mit invalidem Markup leben.
noscript ist sowieso nicht die feine Art, gängigerweise macht man das anders: Man bindet ein Stylesheet ohne Javascript einfach mit <link> ein. Mit JavaScript fügt man dann mit document.write ein weiteres <link> ein, das die Regeln dieses Stylesheets an bestimmten Stellen gezielt überschreibt.
Binde also standardmäßig inhalt.css.view und infoan.css.view ein. Mit JavaScript dann infoaus.css.view, das diese Stylesheets gezielt überschreibt. Dann kannst du auch valides Markup schreiben.
<link rel="stylesheet" type="text/css" href="/modules/shop/scripts/shop.css.view">
<link rel="stylesheet" type="text/css" href="/modules/shop/scripts/menue.css.view">
<link rel="stylesheet" type="text/css" href="/modules/shop/scripts/produkte.css.view">
<link rel="stylesheet" type="text/css" href="/modules/shop/scripts/links.css.view">
Solch ein Wust muss nicht im HTML-Code stehen. Beschäftige dich mit @import.
Mathias
Lieber Ron,
<script type="JavaScript">
wie wäre es mit type="text/javascript"?
<!--
Den hier kannste Dir sparen!
Laden();
Wird beim Laden der Seite sofort ausgeführt... Da könnten von dieser Funktion angesprochene Elemente noch fehlen. Bist Du sicher, dass diese Funktion nicht "onload" ausgeführt werden sollte?
var Zeile="<LINK REL="STYLESHEET" HREF=""+CSSFile+"" TYPE="text/css">";
Das interpretiert der Browser. Probiere doch folgendes:
var Zeile = '<'+'link rel="stylesheet" href="'+CSSFile+'" type="text/css" /'+'>';
//-->
Den sparste Dir auch.
</script>
Und wie sieht es jetzt aus?
Liebe Grüße aus Ellwangen,
Felix Riesterer.
Hi,
var Zeile="<LINK REL="STYLESHEET" HREF=""+CSSFile+"" TYPE="text/css">";
Das interpretiert der Browser. Probiere doch folgendes:
nö.
cu,
Andreas