Gå til innhold

bug i html / javascript parser


Anbefalte innlegg

Dette html dokumentet skulle ha vist en nesten helt blank side, hvit bakgrunn og kun ordet "kropp" øverst til venster.

Isteden blir det rød bakgrunn og endel mer tekst. Prøv selv. (har prøvd på IE6 og Opera 7.11)

Walkaround er å putte inn en "+": var bugVar = "<"+"/script>";

 

<HTML>

<HEAD>

<script language=javascript>

function minFunc() {

var okVar = "dette funker";

var bugVar = "</script>";

var htmlVar = "</HEAD><BODY bgcolor='red'>";

var htmlVar2 = "dette regnes ikke som javascript kode!";

}

//denne teksten skrives også som en del av html koden!

</script>

</HEAD>

<BODY>

<P>kropp

</BODY>

</HTML>

Lenke til kommentar
Videoannonse
Annonse

Det skal jeg fortelle deg:

Det er ingenting som tilsier, rent logisk sett, at scriptet skal kjøres siden du ikke kalle på funksjonen minFunc()

Men hvis vi ser dette fra browserens side så er det litt anderledes ut.

Linje01: html begynner
linje02: head begynner
linje03: et script begynner. Ignorer foreløpig
linje04: del av et script. Ignorer foreløpig
linje05: del av et script. Ignorer foreløpig
linje06: </script> Skripete slutter.
linje07: head slutter og body begynner med rød bakgrunn
linje08: tekst i body siden body har begynt
linje09: tekst i body siden body har begynt
linje10: tekst i body siden body har begynt
linje11: et script slutter. Hmm, hvilket script er det da? Ignorer dårlig kode
linje12: head slutter? men vi er jo alt i body. Ignorer dårlig kode
linje13: body begynner? ****** for en dust, vi er i body alt. Ignorer
linje14: p begynner. skrit ut kropp
linje15: slutt på body
linje16: slutt på html. ****** for en lettelse. Hva slags taper har skrevet denne møkkasiden..?

(la til litt personlighet :p )

 

Dette er grunnen til at du ALLTID skal kommentere vekk kode. Tagger leses som tagger uavhengig av hvor de er plassert.

Skjønner?

Endret av enden
Lenke til kommentar

Ja nettopp fordi koden i scriptet tolkes som ren html når skriptet ikke er kommentert vekk.

Rent logisk sett skal hele scriptet ignoreres, men siden </script> er en del av scriptet vil det avslutte seg selv midt inni. Dette fordi html tagger tolkes som html tagger med mindre de er kommentert bort - det hjelper ikke at de er en del av en streng i et script. Du er rett og slett uheldig som har med </script> i selve scriptet, men la dette være en lærepenge, for det er like ile med andre tagger selv om browseren som regel klarer å luke de ut som brukerfeil

Endret av enden
Lenke til kommentar
Dette er grunnen til at du ALLTID skal kommentere vekk kode. Tagger leses som tagger uavhengig av hvor de er plassert.

Skjønner?

 

Godt poeng.

Har faktsik aldri tenkt på det som en grunn til å kommentere ut script. Trodde man bare kommenterte ut for å ungå problemer med browsere som ikke støttet script - altså noe som henger igjen fra gamle dager.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...