IE end-of-line comment bug

In realtà non è proprio un bug, ma una corretta interpretazione di Internet Explorer delle specifiche CSS 2.1.

I CSS permettono solo due tipi di commenti:

  1. Di blocco, cioè racchiudendo il commento tra /* e */
  2. In alcuni casi l’ SGML, cioè quello dell’HTML, sempre di blocco racchiudendo i commenti tra <!– e –>

In molti linguaggi di programmazione esiste un altro tipo di commento, detto end-of-line perché inizia con // e termina con la fine della riga (al ritorno carrello). Oggi per caso, debuggando un foglio di stile mi sono imbattuto in questa cosa strana:


body {
background: #fff;
// background: #000;
}

L’errore è mio perché ho commentato il CSS in maniera scorretta, ma la cosa bella è che Firefox, Opera e Safari (per Windows) interpretano la doppia backslash come inizio di un commento, mentre Internet Explorer (6 e 7) giustamente la ignora come da specifiche e interpreta il contenuto impostando il colore di sfondo a #000.

Se applicate lo stile ad una pagina potete fare la prova voi stessi.

Questo non-bug può essere utile per far leggere determinate porzioni di foglio di stile solo ad IE. Ad esempio può essere utile per scrivere un hack per il boxmodel:


div.box {
width: 80px;
height: 80px;
padding: 10px;
// height: 100px;
// width: 100px;
}

Ovviamente però il CSS non sarà validato.

2 commenti

  1. Pubblicato 16 Agosto 2007 alle | Permalink

    Non conoscevo questo hack, se così lo si può definire. Di solito avevo sfruttato la non interpretazione di alcuni elementi e di !important, ma questo può rivelarsi veramente utile e ingegnoso. Peccato per la non validazione del CSS, ma purtroppo bisogna rinunciare a qualcosa per ottenere altro… finchè ( chissà quando ), non dovremo più preoccuparci di realizzare layout crossbrowser, grazie all’ omogenea interpretazione di markup e stili.. saremo ancora vivi quando succederà, ammesso e non concesso che succederà? :D

  2. Laburno
    Pubblicato 16 Agosto 2007 alle | Permalink

    Ciao Davide,
    Non so se ho scoperto l’acqua calda, stamattina è uscito fuori per caso.

    Per quel che ne so io, quando c’è da debuggare il css per explorer, si finisce sempre per “sporcare”.
    Si può comunque usare in un foglio di stile ad hoc da richiamare con i commenti condizionali, a quel punto un hack vale l’altro, ma almeno questo si ricorda facilmente.

    Sbaglio o ho letto di un Explorer8 verso fine anno? Nel caso, questa pantomima degli hack, finirà soltanto con gli aggiornamenti automatici di Windows (posto che Explorer8 passi l’AcidTest come tutti gli altri browser). Speriamo davvero :)

Invia un commento

La tua e-mail non sarà mai pubblicata o ceduta ad altri. I campi obbligatori sono contrassegnati con un *

*
*