Schrift
[thread]2346[/thread]

JavaScript und Kommentare: bzw Firefox bug?



<< |< 1 2 >| >> 16 Einträge, 2 Seiten
vayu
 2007-06-25 16:52
#25151 #25151
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
Das folgende Codestück wird vom IE7 korrekt angezeigt ...

der FF 2.0.0.4 verhält sich aber merkwürdig. in dem Javascript Kommentar erkennt er das schliessende script-tag und gibt den rest in den Browser aus ... mache ich da was verkehrt oder FF?

ich habe es auch mit single line comments // probiert ... hat auch keine änderung gebracht.

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<script type='text/javascript' language='javascript'>
<!--
/*
Test test test
Add <script src="sorttable.js"></script> to your HTML
Test test test
*/

//-->
</script>
</head>
<body>
just some test content
</body>
</html>
GwenDragon
 2007-06-25 17:18
#25152 #25152
User since
2005-01-17
14748 Artikel
Admin1
[Homepage]
user image
Böser Bug in FF 2 + 3.

Aber es hilft <\/script> zu schreiben ;)
vayu
 2007-06-25 17:22
#25153 #25153
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
phew ... also der bug is auch schon bekannt? hab da nix zu gefunden.

was ich jetzt gemacht hab ... hab < und > durch die &lt; und &gt; ersetzt ... vom prinzip dasgleiche wie du :) man ändert einfach den script-tag so ab, dass er nicht mehr als schliessender erkannt wird.

Dank dir
jan
 2007-06-25 18:11
#25154 #25154
User since
2003-08-04
2536 Artikel
ModeratorIn
[Homepage] [default_avatar]
das tolle war zumindest früher immer, dass sogar
Code: (dl )
alert('</script>');


zu nem fehler führte ... half dann nur
Code: (dl )
alert('</scr' + 'ipt>');
GwenDragon
 2007-06-25 18:48
#25155 #25155
User since
2005-01-17
14748 Artikel
Admin1
[Homepage]
user image
[quote=jan,25.06.2007, 16:11]das tolle war zumindest früher immer, dass sogar
Code: (dl )
alert('</script>');


zu nem fehler führte ... half dann nur
Code: (dl )
alert('</scr' + 'ipt>');
[/quote]
Deswegen sollte sowieso
Code: (dl )
alert('<\/script>');
geschrieben werden, das ist aber eigentlich Usus.
murphy
 2007-06-25 18:58
#25156 #25156
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
[quote=GwenDragon,25.06.2007, 15:18]Böser Bug in FF 2 + 3.
[...][/quote]
Das ist kein Bug. Das Verhalten des Firefox ist völlig korrekt, das des Internet Explorer selbst für HTML 4.01 Transitional kulanter als es sein müsste.

Der Inhalt von <script>-Tags ist genau wie der aller anderen HTML-Elemente vom Typ PCDATA, was bedeutet, dass man darin spezielle Zeichen durch Entitäten ersetzen sollte. Der HTML-Parser des Browsers muss den Skriptquelltext ja nicht verstehen, er liest ihn nur ein, substituiert die Entitäten und übergibt ihn an einen passenden Skriptinterpreter. Kommentare im JavaScript-Stil werden erst vom JavaScript-Interpreter erkannt -- für den Parser des Browsers ist das ganze Skript einfach Text.

Wenn Du nicht ordentlich Entitäten verwendest, wirst Du zum Beispiel auch Probleme mit Code wie if (a < 5) { ... } bekommen. Da muss man stattdessen if (a &lt; 5) { ... } schreiben.

Alternativ hilft es auch, XHMTL zu schreiben und das Skript in einen <![CDATA[ ... ]]>-Block zu packen.

Irgendwo Backslashes als Escapezeichen einzufügen, wie von GwenDragon vorgeschlagen, mag zwar manchmal funktionieren, ist aber definitiv keine saubere Lösung, denn die spitzen Klammern stehen dann erst recht als ungültige Tagbegrenzungen in der Gegend herum.
When C++ is your hammer, every problem looks like your thumb.
vayu
 2007-06-25 20:02
#25157 #25157
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
d.h. ich müsste in dem kompletten skript die < > ersetzen? wenn ich das skript in eine eigene .js auslagere und nur include über das script-tag dann brauch ich das aber nicht richtig?
murphy
 2007-06-25 20:27
#25158 #25158
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
Wenn das Skript in seiner eigenen Datei liegt, wird es so interpretiert, wie es da steht und man muss sich nicht darum kümmern, HTML-spezifische Zeichen zu ersetzen.

Täte man es dennoch, so würde es wiederum nicht funktionieren, denn der JavaScript-Interpreter versteht so wenig von HTML-Entitäten wie der HTML-Parser von JavaScript ;-)

Für jedes Skript, das über wenige Zeilen hinausgeht, ist es daher meines Erachtens sinnvoll, eine eigene Skriptdatei anzulegen.

(edit: Tippfehler korrigiert)\n\n

<!--EDIT|murphy|1182788946-->
When C++ is your hammer, every problem looks like your thumb.
vayu
 2007-06-26 10:17
#25159 #25159
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
ok, danke auf jeden fall erstmal für die aufklärung
GwenDragon
 2007-06-26 13:18
#25160 #25160
User since
2005-01-17
14748 Artikel
Admin1
[Homepage]
user image
@murphy

Code: (dl )
1
2
3
4
5
6
7
8
9
<script type='text/javascript' language='javascript'>
<!--
/*
Test test test
Add <script src="sorttable.js"></script> to your HTML
Test test test
*/

//-->


Quote
Information that appears between comments has no special meaning (e.g., character references are not interpreted as such).

Da steht aber das ganze Skript in einem HTML-Kommentar.

Warum überspringt der HTML-Parser das dann nicht?\n\n

<!--EDIT|GwenDragon|1182849692-->
<< |< 1 2 >| >> 16 Einträge, 2 Seiten



View all threads created 2007-06-25 16:52.