Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[HTML] Comment-bug in FireFox?

Pagina: 1
Acties:

  • Pelle
  • Registratie: Januari 2001
  • Nu online

Pelle

🚴‍♂️

Topicstarter
Aanschouw deze source:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
<html>
<head>
    <title></title>
</head>

<body>

<!-- | WTF ?! | ----------- -->
<h1>
    Dit is dus echt raar
</h1>

<!-- | MELP | ----------- -->
<p>
    Ja, zeg dat wel...
</p>

</body>
</html>


Te zien op http://www.jellejanvanveelen.nl/got/test.html

IE rendert dit gewoon correct, maar FireFox laat de H1 niet zien.
Check de source maar eens, dan zie je dit:

Afbeeldingslocatie: http://www.jellejanvanveelen.nl/got/test-ff.png

Heeft iemand hier een verklaring voor? Alles tussen <!-- en --> hoort comment te zijn, maar zo te zien negeert FF gewoon de closing tag.

  • sjroorda
  • Registratie: December 2001
  • Laatst online: 21-11 20:47
Zie http://validator.w3.org/c...elen.nl%2Fgot%2Ftest.html : zou het niet zo kunnen zijn dat comments ook begrensd kunnen worden door een hoop streepjes of zo? Maakt het nog steeds bizar, want ik heb geloof ik ook regelmatig dit soort comments erin gezet!

[ Voor 20% gewijzigd door sjroorda op 09-11-2005 10:36 ]


  • Theske
  • Registratie: Februari 2003
  • Laatst online: 14-05-2017
haal het volgende maar eens weg, dan doet hij het wel.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Proud member of the Cosmic Cows


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 22-11 13:46

Janoz

Moderator Devschuur®

!litemod

Binenn een comment is '--' niet toegestaan tenzij het onderdeel is van de -->. Haal je de -----'s weg dan zal het waarschijnlijk wel werken.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Reinier
  • Registratie: Februari 2000
  • Nu online

Reinier

\o/

adjacent hyphens within comment
Cause:

This is due to too many hyphens "-" in the declaration of a comment. A comment is defined like this <!-- comment -->
Solution:

Remove the additional hyphens

BAD <!--- comment --->
GOOD <!-- comment -->

References:

W3C spec : http://www.w3.org/TR/html401/intro/sgmltut.html#h-3.2.4
Dat zegt mijn Tidy :)

  • Pelle
  • Registratie: Januari 2001
  • Nu online

Pelle

🚴‍♂️

Topicstarter
Als ik de streepjes weghaal, dan werkt het prima, dat had ik zelf ook al gezien. Maar dat is een workaround, geen verklaring. Zowiezo is het weird dat de H1 niet wordt weergegeven, maar de P wel.

btw sjroorda, gefeliciteerd met je trouwdag.. ik zag het op DPZ ;)

  • sjroorda
  • Registratie: December 2001
  • Laatst online: 21-11 20:47
Pelle schreef op woensdag 09 november 2005 @ 10:40:
Als ik de streepjes weghaal, dan werkt het prima, dat had ik zelf ook al gezien. Maar dat is een workaround, geen verklaring. Zowiezo is het weird dat de H1 niet wordt weergegeven, maar de P wel.

btw, gefeliciteerd met je trouwdag.. ik zag het op DPZ ;)
Voor de verklaring:
White space is not permitted between the markup declaration open delimiter("<!") and the comment open delimiter ("--"), but is permitted between the comment close delimiter ("--") and the markup declaration close delimiter (">"). A common error is to include a string of hyphens ("---") within a comment. Authors should avoid putting two or more adjacent hyphens inside comments.
offtopic:
Thx :P

  • Pelle
  • Registratie: Januari 2001
  • Nu online

Pelle

🚴‍♂️

Topicstarter
Janoz schreef op woensdag 09 november 2005 @ 10:38:
Binenn een comment is '--' niet toegestaan tenzij het onderdeel is van de -->. Haal je de -----'s weg dan zal het waarschijnlijk wel werken.
Sinds wanneer? Ik vind dat maar raar, waarom zou dat niet zijn toegestaan?

  • Reinier
  • Registratie: Februari 2000
  • Nu online

Reinier

\o/

Workaround? Jouw commentaar voldoet niet aan de specificaties van het W3C, en dát is de verklaring!

Dat FF vervolgens niet consequent lijkt te zijn doet niet zo terzake vind ik (al is er wat voor te zeggen dat de afhandeling van incorrecte HTML alsnog consequent zou moeten zijn...)

  • sjroorda
  • Registratie: December 2001
  • Laatst online: 21-11 20:47
Reinier schreef op woensdag 09 november 2005 @ 10:42:
Workaround? Jouw commentaar voldoet niet aan de specificaties van het W3C, en dát is de verklaring!

Dat FF vervolgens niet consequent lijkt te zijn doet niet zo terzake vind ik (al is er wat voor te zeggen dat de afhandeling van incorrecte HTML alsnog consequent zou moeten zijn...)
IMHO doet FF juist wel wat het moet doen: hij zoekt kennelijk ergens anders pas het einde van de comments. IE slikt de foute syntax wel, en laat wel de H1 zien. Maar een FF-IE-discussie lijkt me hier niet op zijn plaats: het is gewoon foute HTML-code, en handig om dat te weten :).

  • Pelle
  • Registratie: Januari 2001
  • Nu online

Pelle

🚴‍♂️

Topicstarter
Okee, dat het blijkbaar een specificatie is, is me duidelijk. Maar waarom is dit in HTML 4.0 wel toegestaan, en in XHTML dan niet? Ik kan geen logische verklaring bedenken...

  • Reinier
  • Registratie: Februari 2000
  • Nu online

Reinier

\o/

sjroorda schreef op woensdag 09 november 2005 @ 10:43:
[...]

IMHO doet FF juist wel wat het moet doen: hij zoekt kennelijk ergens anders pas het einde van de comments. IE slikt de foute syntax wel, en laat wel de H1 zien. Maar een FF-IE-discussie lijkt me hier niet op zijn plaats: het is gewoon foute HTML-code, en handig om dat te weten :).
Ik ben er niet zo zeker van dat FF in dit geval doet wat hij móet doen. Wat is precies de reden dat hij blijkbaar de eerste open-tag <!-- en de laatste sluit-tag --> met elkaar matcht, en alles wat ertussen zit (dus inclusief de "binnenste" comment-tags én de h1) als commentaar ziet?

Het was niet mijn bedoeling om een FF-IE-discussie te ontketenen trouwens ;)

[ Voor 3% gewijzigd door Reinier op 09-11-2005 11:19 ]


  • Pelle
  • Registratie: Januari 2001
  • Nu online

Pelle

🚴‍♂️

Topicstarter
Als ik er nog twee paragrafen bij zet, met deze source:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
<html>
<head>
    <title></title>
</head>

<body>

<!-- | WTF ?! | ----------- -->
<h1>
    Dit is dus echt raar
</h1>


<!-- | MELP | ----------- -->
<p>
    Ja, zeg dat wel...
</p>

<!-- | THINGS ARE GETTING BETTER | ----------- --> 
<p>
    Nog een paragraaf.
</p>


<!-- | OR NOT? | ----------- -->
<p>
    En weer eentje
</p>


</body>
</html>


..dan levert dat in FF dit op:

Afbeeldingslocatie: http://www.jellejanvanveelen.nl/got/test2.png

En, om het allemaal nog weirder te maken:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
<html>
<head>
    <title></title>
</head>

<body>

<!-- | WTF ?! | ----------- -->
<h1>
    Dit is dus echt raar
</h1>


<!-- | MELP | ----------- -->
<p>
    Ja, zeg dat wel...
</p>

<!-- | THINGS ARE GETTING BETTER | ----------- --> -->
<p>
    Nog een paragraaf.
</p>


<!-- | OR NOT? | ----------- -->
<p>
    En weer eentje
</p>


</body>
</html>


Geeft dit:

Afbeeldingslocatie: http://www.jellejanvanveelen.nl/got/test3.png

Schiet mij maar lek...

  • Reinier
  • Registratie: Februari 2000
  • Nu online

Reinier

\o/

Wat ben je nu eigenlijk moeilijk aan het doen? Je weet inmiddels dat streepjes niet toegestaan zijn in comments, dus als je dat toch doet vraag je toch om problemen, renderfouten, onlogischheden, etcetera?

Overigens is Firefox open source dus je kan gewoon in de code zoeken naar hoe FF met comments omgaat ;)

  • NeOTheMaTriXM
  • Registratie: April 2001
  • Laatst online: 13:13
Je eerst comment wordt pas afgesloten op je "tweede" comment.. aangezien het eigenlijk maar 1 comment is. Niks vreemds aan wat mij betreft.

Verwijderd

de grap is dat in sgml alles tussen -- en -- (niet greedy uiteraard) comment is, binnen html is alles binnen <! en > sgml, dus zodoende ga je problemen krijgen

<!-- -- --> --> hier is dus de eerste "sluittag" comment
<!-- --> --> hier is de tweede tag cdata

in x(ht)ml gaat het wel zoals je verwacht, daar krijg je gewoon een wellformdness error

stel je doet
HTML:
1
<!-- e -- f -->g-->hello-->

je begint met in sgml springen, de e is hier comment, de f is sgml (maar daar doet html vervolgens niks mee), de ">g" is weer comment (binnen sgml) de volgende > niet meer en die sluit dus de sgml af. hello en de daar op volgende --> zijn gewoon cdata

om je eerste stuk te verduidelijken vereenvoudig ik het effe door groepen van ---- (comment openen en sluiten of vice versa) te verwijderen:
HTML:
1
2
3
4
5
6
7
<!-- | WTF ?! | --- -->
<h1>
    Dit is dus echt raar
</h1>


<!-- | MELP | --- -->

da's dus equivalent
we gaan sgml in, dan in comment mode, | WTF ?! | is comment, de sluit de comment, "- " is weer sgml, dan opent weer een comment, ">" en de html en de "<!" erna zijn comment, dan sluit ie, | MELP | is sgml, "- " is weer comment, dan sluit ie, zodat de ">" geen comment is en de sgml afsluit

het stuk erna, weer vereenvoudigd:
HTML:
1
2
3
4
5
6
7
8
9
10
<!-- | THINGS ARE GETTING BETTER | --- --> -->
<p>
    Nog een paragraaf.
</p>


<!-- | OR NOT? | --- -->
<p>
    En weer eentje
</p>

je opent sgml + comment, die tekst is comment, dan sluit ie af, weer "- " als sgml, de eerste ">" en spatue zijn comment, de tweede ">" sluit sgml, hier "niets" aan de hand dus, de paragraaf erachter wordt als html gezien.

Dan je laatste comment, met dezelfde redenering wordt die nooit afgesloten en dus helemaal niet als (html) element gezien, je hele boel is dus cdata, muv de sgml open tag

[ Voor 119% gewijzigd door Verwijderd op 09-11-2005 13:34 ]


  • Pelle
  • Registratie: Januari 2001
  • Nu online

Pelle

🚴‍♂️

Topicstarter
Reinier schreef op woensdag 09 november 2005 @ 12:39:
Wat ben je nu eigenlijk moeilijk aan het doen? Je weet inmiddels dat streepjes niet toegestaan zijn in comments, dus als je dat toch doet vraag je toch om problemen, renderfouten, onlogischheden, etcetera?
Omdat ik probeer te doorgronden waarom FireFox dit doet. En hoe bijv. in mijn laatste voorbeeld de <! boven de laatste P gewoon verdwijnt.

Ik zal geen --'s meer gebruiken in comments in XHTML, dus daar hoef je niet bang voor te zijn. Maar ik probeer wel te snappen waarom FF dit zo parsed.

mophor: thanks voor je uitleg, ik snap het geloof ik :)

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Het heeft niets te maken met XHTML of HTML, maar meer met quirksmode vs standards compliant mode rendering lijkt me.
iig doet Firefox het correct in standards compliant mode, en IE is stom :P

XHTML is ook stom ;)

[ Voor 10% gewijzigd door crisp op 09-11-2005 14:14 ]

Intentionally left blank


  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 17:53
Je kunt er wel redelijk mee in het rond hacken... De volgende code levert in zowel de validator als FF geen class="ie". In Opera en IE krijgt hij hem wel.
Misschien een title-change naar Comment-bug in IE?
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    
<html>
<head>
    <title>Test</title>
    <style type="text/css">
      div { background: #ECECEC; }
      div.ie { display: block; background: blue; }
    </style>
</head>

<body>
<h1>Comment test</h1>
<p>If the division below has a blue background it will not ignore the in-element comment</p>
<div <!-- class="ie" -->
 <p>What is the color of your browser?</p>
</div>

</body></html>

Regeren is vooruitschuiven

Pagina: 1