[Firefox / XHTML] Commentblock wordt in browser weergegeven

Pagina: 1
Acties:

  • prototype
  • Registratie: Juni 2001
  • Niet online

prototype

Cheer Bear

Topicstarter
Een maat van me is onlangs druk bezig geweest met zich te verdiepen in xhtml en wilde graag het e.e.a. crossbrowser bewerkstelligen. Bij het testen in IE ging alles naar verwachting, echter bij firefox kregen we iets totaal aparts te zien; de commentblock is gewoon dood leuk te lezen in de browser.
Het grappige is, het gebeurt slechts in een paar specifieke gevallen, waarin ik even gevarieerd heb met het aantal streepjes. De gehanteerde commentaar conventie terzijde, is dit toch een parse bug dunkt me? Of heeft iemand een verklaring hiervoor :D, ik kan er iig niet echt een regelmaat in vinden, en moet het afdoen als ongedefinieerd gedrag.

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

<html>
<head>
    <title>IG UT-Strangelove Clan</title>
    <link rel="stylesheet" type="text/css" href="default.css" />
</head>
<body>

        <!-- ------------------------ Site navigation ----------------------- -->
        
        <!-- ------------------------ Site navigation ---------------------------- -->
        
        <!-- ----------------------- Site navigation ----------------------- -->
        

</body>
</html>

  • Cubix
  • Registratie: Juni 2001
  • Niet online
Bij XHTML mag je volgens mij geen comments gebruiken. Niet echt XML zo...

Test het eens door er html 4.01 van te maken.

[ Voor 26% gewijzigd door Cubix op 22-12-2005 21:30 ]


  • disjfa
  • Registratie: April 2001
  • Laatst online: 08-01 11:17

disjfa

be

Cubix schreef op donderdag 22 december 2005 @ 21:30:
Bij XHTML mag je volgens mij geen comments gebruiken. Niet echt XML zo...

Test het eens door er html 4.01 van te maken.
Euh dat mag gewoon hoor. Alleen in comment mogen -- streepjes niet. Correct gesproken dan.

disjfa - disj·fa (meneer)
disjfa.nl


  • prototype
  • Registratie: Juni 2001
  • Niet online

prototype

Cheer Bear

Topicstarter
Cubix schreef op donderdag 22 december 2005 @ 21:30:
Bij XHTML mag je volgens mij geen comments gebruiken. Niet echt XML zo...

Test het eens door er html 4.01 van te maken.
Interessant punt, ware het niet dat de overigen wel opgevat worden als commentaar en in een geval niet. Afaik mochten comments wel in XML.
disjfa schreef op donderdag 22 december 2005 @ 21:31:
[...]

Euh dat mag gewoon hoor. Alleen in comment mogen -- streepjes niet. Correct gesproken dan.
Apart, want ik zou niet een reden kunnen bedenen hoe dit tot problemen zou kunnen leiden aangezien een comment van de syntax <!--_*_--> is, waarbij de _ even een whitespace voorstelt en * uiteraard niet <!-- of --> mag zijn.

[ Voor 44% gewijzigd door prototype op 22-12-2005 21:35 ]


  • disjfa
  • Registratie: April 2001
  • Laatst online: 08-01 11:17

disjfa

be

http://www.w3.org/TR/REC-...t.html#character-entities
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.
Ik kan even zo snel niet de gehele uitleg vinden maar daar staat het al wel :)

disjfa - disj·fa (meneer)
disjfa.nl


  • prototype
  • Registratie: Juni 2001
  • Niet online

prototype

Cheer Bear

Topicstarter
disjfa schreef op donderdag 22 december 2005 @ 21:36:
http://www.w3.org/TR/REC-...t.html#character-entities


[...]


Ik kan even zo snel niet de gehele uitleg vinden maar daar staat het al wel :)
Hmmm interessant, maar het verklaart niet waarom 2 of meer streepjes achter elkaar niet mogen. De hele uitleg kon ik dus ook niet vinden :'(
Ik kan namelijk bij wijze van makkelijk een finite state machine van <!-- --> maken, zodat het nog voldoet aan <!-- -------- ----- - - - -- - - -- -->. Bovendien verklaart dit nog niet de onverklaarbare renderfout van firefox, dat niet plaats vindt als we even varieren door een paar streepjes erbij te zetten.

[ Voor 9% gewijzigd door prototype op 22-12-2005 21:52 ]


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:24

crisp

Devver

Pixelated

Het is heel simpel; je hebt je markup declaration open en close delimiter en daarbinnen comment open en close delimiters; de syntax is als volgt:
  • MDO ("<!"),
  • nul of meer keer: (
    • COM ("--"),
    • tekst die geen COM ("--") mag bevatten
    • COM ("--")
    • eventueel whitespace ),
  • MDC (">").
Bekijk de volgende situatie:
HTML:
1
<!-- -- dit is geen comment -->

Wat gebeurt hier?
<! is de markup open delimiter
-- is een comment open delimiter
-- is een comment close delimiter
"dit is geen comment" is invalid data
-- is een comment open delimiter
> is dus commented data

vervolgens vind de parser geen geldige MDC; HTML error-correction zorgt ervoor dat dan de MDO ook genegeerd wordt, en je hele comment is ineens zichtbaar!
Dit is wel een geldige comment, hoewel de w3c validator zegt van niet:
HTML:
1
<!-- -- -->-->


De Acid2 test omvat een aantal testen met comment syntax; da's ook een punt waar IE op faalt aangezien IE dit niet goed geimplementeerd heeft ;) Firefox slaagt wel op dit punt vziw

Oh, IE ondersteund niet eens echt XHTML, en als je XHTML als text/html verstuurd kan je net zo goed beter een HTML DTD gebruiken ;)
IE is sowieso niet een browser waar je vanuit moet gaan gezien de brakke ondersteuning van standaarden.

[ Voor 23% gewijzigd door crisp op 22-12-2005 23:34 ]

Intentionally left blank


Verwijderd

d'r was laatst oiok een topic van willem169 (dacht ik) over, met hetzelfde verhaal, stonden ook een aantal behoorlijk leuke en maffe voorbeelden in

  • prototype
  • Registratie: Juni 2001
  • Niet online

prototype

Cheer Bear

Topicstarter
@Crisp en Disjfa, bedankt, nu ik wat nuchterder ben besef ik me dat ik de standaard definitie verkeerd heb gelezen :). Disjfa's quote gaf al aan waarom het fout is, waarbij de nadruk ligt op dit gedeelte.
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.
Dat houdt in dat ook het volgende een geldige comment zou zijn, wat ik nooit had gedacht :D:
HTML:
1
2
3
<!-- asdsadas
--
>


Dit maakt al iig duidelijk waarom het niet mag :) De gegeven uitleg geeft ook aan waarom het fout gaat; volgens mij zorgt het aantal hyphens N, in het bijzonder waarvoor geldt N % 2 == 0, ervoor dat de parser denkt dat hij N/2 keer met een delimiter te maken heeft. Het was idd erg makkelijk, dankje, 'k ben weer wat wijzer geworden dankzij jullie ;)

N.B. Begrijp me niet verkeerd hoor, IE gebruiken we beide niet, om de redenen die jij noemt, maar we dachten het beter te weten ;) en vonden het daarom des de raarder dat firefox dit als resultaat gaf dat achteraf gezien niet raar is.

[ Voor 25% gewijzigd door prototype op 23-12-2005 03:01 ]

Pagina: 1