Javascript Valide
lima-city → Forum → Die eigene Homepage → HTML, CSS & Javascript
bereich
browser
code
datei
dokument
eigenschaft
element
externe datei
fehler
funktion
horror
http
ignorieren
interpretieren
kommentar
normalen text
notation
projekt
tag
zeile
-
Hallo,
ich hab meine Seite mal bei W3C validieren lassen und bekomme beim Javascript einen tag/fehler">Fehler.
Der Fehler bezieht sich auf die For-Schleife, da hab ich ein dekrement (i--), und das beachtet er, obwohl Javascript in einem Kommentar ist.
Außerdem gibt es ein Warning: Ich habe ein Kommentar geöffnet.
Mach ich das Kommentar weg, dann passt alles und meine (Start-)Seite ist valide.
Was kann da Schuld sein?? -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
nachdem ich keinen code sehe vermute ich mach die einfachste antwort:
du hast ein kommentar geöffnet und irgendwo nicht geschlossen
wenn du uns mit ein bischen code verwöhnen willst gibts vielleicht bessere antworten, aber meistens is die einfachste auch die richtige :) -
Ich würd das Javascript einfach mal auslagern in eine eigene Datei, denn das nichts im HTML zu suchen.
-
Also ein HTML-Kommentar mach ich im Javascript keines mehr.
Nur JavaScript-Kommentare (//).
Hier ein bisschen Code:
<script type="text/javascript">
function change_style(value) {
var i=3;
var hilf;
for(i=3; i>=0; i--) {
hilf = "style" + i;
if(value==hilf) {
value=i;
i=0
}
// else
// value="";
}
window.location.href = "<?php echo "http://".$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']."?p=".$_GET['p']."style=";?>" + value;
}
</script>
So gibt es kein Error, wenn ich aber Kommentare setze ...
<script type="text/javascript">
<!--
function change_style(value) {
var i=3;
...
}
//-->
</script>
... schon.
Beitrag geändert: 26.11.2007 15:40:28 von philippkern -
Das Problem mit JavaScript innerhalb von HTML sind die Tag-Klammern, die in JS eine andere Bedeutung haben.
Deswegen musst du deinen JavaScript Bereich explizit als Plaintext deklarieren, damit ein XML Parser dort keine weiteren Tags sucht und alles wie normalen Text behandelt.
Die Kennzeichnung von JavaScript sollte daher so aussehen:
<script type="text/javascript">/* <![CDATA[ */
/* ]]> */</script> -
Das Problem mit JavaScript innerhalb von HTML sind die Tag-Klammern, die in JS eine andere Bedeutung haben.
Deswegen musst du deinen JavaScript Bereich explizit als Plaintext deklarieren, damit ein XML Parser dort keine weiteren Tags sucht und alles wie normalen Text behandelt.
Die Kennzeichnung von JavaScript sollte daher so aussehen:
<script type="text/javascript">/* <![CDATA[ */
/* ]]> */</script>
So gehts, aber da ist jetzt kein Html-Kommentar drinnen.
Versuchen die älteren Browser das dann nicht "darzustellen"?.
Stimmt es eh das ich die JS-Funktion im Body-Teil definiere? -
Ältere Browser ignorieren das auch, weil sie es nicht interpretieren können.
JS gehört in den Head und dann in eine externe Datei. In der HTML Datei JS zu haben ist pfui! -
Ältere Browser ignorieren das auch, weil sie es nicht interpretieren können.
JS gehört in den Head und dann in eine externe Datei. In der HTML Datei JS zu haben ist pfui!
Bei SELFHTML steht das ein Browser den JS-Code einfach ausgibt, wenn er ihn nicht interpretieren kann.
Und wenn ich es nicht in eine externe Datei haben will, dann ist es auch im Body möglich, stimmts?
Also das es funzt weiß ich, aber obs "depracted" (oder so) ist? -
So gehts, aber da ist jetzt kein Html-Kommentar drinnen.
Versuchen die älteren Browser das dann nicht "darzustellen"?.
"ältere Browser" gibt es nicht mehr. JavaScript wird in allen gängigen Browsern als solches erkannt und je nach den Fähigkeiten des Browsers ausgeführt oder nicht.
Die Zeiten, wo du einen JavaScript Bereich mit HTML Kommentaren entschärfen musst, sind definitiv vorbei.
Unsere "Problemkinder" sind jetzt keine Browser, sondern XML Parser, die die < > Zeichen als Tags erkennen. Daher muss man ihnen sagen, dass sie diese Zeichen ignorieren sollen.
http://de.selfhtml.org/html/xhtml/unterschiede.htm#script_style
Stimmt es eh das ich die JS-Funktion im Body-Teil definiere?
JavaScript Bereiche kannst du überall im Dokument haben.
Die Einschränkung mit der Einbindung im <head> gilt nur für <style> und <link>. Diese beiden Tags haben aber auch nix mit JavaScript zu tun, sondern mit CSS.
http://de.selfhtml.org/html/referenz/elemente.htm#style (siehe Elternelemente)
http://de.selfhtml.org/html/referenz/elemente.htm#script (siehe Elternelemente)
evil-devil schrieb:
Ältere Browser ignorieren das auch, weil sie es nicht interpretieren können.
Nein. Computerprogramme sind doof. Deswegen musst du extra dafür sorgen, dass sie nix zu futtern kriegen, was ihnen nicht bekommt. Denn sonst futtern sie es.
Die Notation
<script type="text/javascript">/* <![CDATA[ */
/* ]]> */</script>
Hat 2 Eigenschaften:
Der /* */ JavaScript Kommentar sorgt dafür, dass die JavaScript-Engine nicht die CDATA-Notation als JavaScript interpretiert und die CDATA-Notation sorgt dafür, dass ein XML Parser den JavaScript Code als Plaintext parst.
JS gehört in den Head und dann in eine externe Datei. In der HTML Datei JS zu haben ist pfui!
Totaler Blödsinn.
philippkern schrieb:
Bei SELFHTML steht das ein Browser den JS-Code einfach ausgibt, wenn er ihn nicht interpretieren kann.
Ja. Ganz alte Browser. Weil sie den <script> Tag für einen ganz normalen Auszeichnungstag halten.
Beitrag geändert: 26.11.2007 18:36:55 von bladehunter -
So gehts, aber da ist jetzt kein Html-Kommentar drinnen.
Versuchen die älteren Browser das dann nicht "darzustellen"?.
"ältere Browser" gibt es nicht mehr. JavaScript wird in allen gängigen Browsern als solches erkannt und je nach den Fähigkeiten des Browsers ausgeführt oder nicht.
Die Zeiten, wo du einen JavaScript Bereich mit HTML Kommentaren entschärfen musst, sind definitiv vorbei.
Unsere "Problemkinder" sind jetzt keine Browser, sondern XML Parser, die die < > Zeichen als Tags erkennen. Daher muss man ihnen sagen, dass sie diese Zeichen ignorieren sollen.
http://de.selfhtml.org/html/xhtml/unterschiede.htm#script_style
Stimmt es eh das ich die JS-Funktion im Body-Teil definiere?
JavaScript Bereiche kannst du überall im Dokument haben.
Die Einschränkung mit der Einbindung im <head> gilt nur für <style> und <link>. Diese beiden Tags haben aber auch nix mit JavaScript zu tun, sondern mit CSS.
http://de.selfhtml.org/html/referenz/elemente.htm#style (siehe Elternelemente)
http://de.selfhtml.org/html/referenz/elemente.htm#script (siehe Elternelemente)
evil-devil schrieb:
Ältere Browser ignorieren das auch, weil sie es nicht interpretieren können.
Nein. Computerprogramme sind doof. Deswegen musst du extra dafür sorgen, dass sie nix zu futtern kriegen, was ihnen nicht bekommt. Denn sonst futtern sie es.
Die Notation
<script type="text/javascript">/* <![CDATA[ */
/* ]]> */</script>
Hat 2 Eigenschaften:
Der /* */ JavaScript Kommentar sorgt dafür, dass die JavaScript-Engine nicht die CDATA-Notation als JavaScript interpretiert und die CDATA-Notation sorgt dafür, dass ein XML Parser den JavaScript Code als Plaintext parst.
JS gehört in den Head und dann in eine externe Datei. In der HTML Datei JS zu haben ist pfui!
Totaler Blödsinn.
philippkern schrieb:
Bei SELFHTML steht das ein Browser den JS-Code einfach ausgibt, wenn er ihn nicht interpretieren kann.
Ja. Ganz alte Browser. Weil sie den <script> Tag für einen ganz normalen Auszeichnungstag halten.
Beitrag geändert: 26.11.2007 18:36:55 von bladehunter
Jetzt bin ich um einiges klüger :)
-
evil-devil schrieb:
Ältere Browser ignorieren das auch, weil sie es nicht interpretieren können.
Nein. Computerprogramme sind doof. Deswegen musst du extra dafür sorgen, dass sie nix zu futtern kriegen, was ihnen nicht bekommt. Denn sonst futtern sie es.
Die Notation
<script type="text/javascript">/* <![CDATA[ */
/* ]]> */</script>
Hat 2 Eigenschaften:
Der /* */ JavaScript Kommentar sorgt dafür, dass die JavaScript-Engine nicht die CDATA-Notation als JavaScript interpretiert und die CDATA-Notation sorgt dafür, dass ein XML Parser den JavaScript Code als Plaintext parst.
Ich hab nichts gegen das <![CDATA[ geschrieben, hin und wieder nutz ich das auch, nur in den meisten Fällen ist der JS ANteil so hoch das er auf keinen Fall in die HTML Datei direkt rein sollte.
JS gehört in den Head und dann in eine externe Datei. In der HTML Datei JS zu haben ist pfui!
Totaler Blödsinn.
Von Codeorganisierung noch nichts gehört? Nicht jeder erzeugt sein Javascript über PHP, oft reicht statisches JS und dann ~1k Zeilen in jedes Dokument zu pasten wäre horror. ZUmal bei den meisten Projekten nicht auf jeder Seite jede JS Funktion benötigt wird. Unnötiger Overhead für den Browser, drum nur schicken was auch geschickt werden muss. -
Ich hab nichts gegen das <![CDATA[ geschrieben, hin und wieder nutz ich das auch,
Dann habe ich dich falsch verstanden.
nur in den meisten Fällen ist der JS ANteil so hoch das er auf keinen Fall in die HTML Datei direkt rein sollte.
Kommt drauf an. Wenn dieser Code nur in genau dieser Datei verwendet wird, ist es klüger ihn nicht auszulagern, weil das einen zusätzlichen HTTP-Request bedeuten würde.
Wenn ein Code von mehreren Dateien eingebunden wird, dann ist die Auslagerung definitiv der richtige Weg. Insbesondere deshalb, weil man nur 1 Datei verändern muss und weil eine bereits runtergeladene JS-Datei im Cache liegt.
Und falls dir dein JS zu aufgebläht vorkommt, musst du gegebenfalls schauen, ob du es optimieren kannst.
JS gehört in den Head und dann in eine externe Datei. In der HTML Datei JS zu haben ist pfui!
Totaler Blödsinn.
Von Codeorganisierung noch nichts gehört?
Diese Codeorganisation sollte aber auch sinnvoll sein.
Außerdem gibt es genügend Fälle, wo ein Script Bereich innerhalb des <body> sinnvoll ist: z.B. wenn per DOM auf HTML Elemente zugegriffen werden soll, die logischerweise erst im <body> definiert sind.
Nicht jeder erzeugt sein Javascript über PHP, oft reicht statisches JS
Richtig. Du kannst aber auch per PHP ausgelagerte JS Dateien dynamisch generieren.
Ich verstehe bloß dein Argument nicht. Wenn du einen dynamischen Wert vom Server brauchst, dann kommt man an PHP schließlich nicht herum. JavaScript hat eben seine Grenzen.
und dann ~1k Zeilen in jedes Dokument zu pasten wäre horror.
Habe ich behauptet, dass ich nie auslagere?
Und bei 1k Zeilen... von was für Scripten sprichst du?
ZUmal bei den meisten Projekten nicht auf jeder Seite jede JS Funktion benötigt wird. Unnötiger Overhead für den Browser, drum nur schicken was auch geschickt werden muss.
Da muss man auch die goldene Mitte finden. Lieber ein paar mehr unnötige Funktionen gebündelt in eine JS Datei und dafür weniger HTTP Anfragen + Cache Vorteil, als dass man jedes mal zig externe Dateien runterladen muss.
Beitrag geändert: 27.11.2007 9:52:41 von bladehunter
Beitrag geändert: 27.11.2007 9:53:28 von bladehunter -
@1k Scripten: Projekte die total auf der Web 2.0 AJAX Schiene laufen. Das ein oder andere könnte man bestimmt noch optimieren, aber solange es läuft ist es erstmal ok. Soviel Zeit gibt einem Chef auch nicht ;)
@DOM/BODY: Naja, in dem Fall ruf ich die jeweilige JS Funktion erst am Ende der Seite auf sofern sie automatisch aufgerufen werden soll. Alles andere kann man mit Try/Catch abfangen.
@kurze Script in HTML: Spricht nichts dagegen, nur hab ich solch kurze Scripte fast nie :/ -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage