Ipotesi: nella stesura e nel test del CSS, vi trovate ad avere problemi di resa con Internet Explorer. Domanda: se doveste scegliere tra usare un hack o il commento condizionale, quale preferireste?

La mia risposta, e credo che i lettori l’abbiano intuito, è: nessuno dei due, prima preferirei usare un workaround. Ma se proprio dovessi scegliere, userei il commento condizionale: è a prova di futuro, non “inquina” il CSS principale e sarei sicuro che risolverei il problema nella maniera più pulita tra le due.

La mia scelta credo sia piuttosto condivisa tra gli standardisti, ma l’altra sera mi è capitato di leggere una voce decisamente fuori dal
coro. Jens Meiert in Why “Conditional Comments” are bad, repeat: bad sostiene con forza che il commento condizionale sia il male. Traduco alcuni passaggi significativi:

L’uso del commento condizionale è sconsigliabile. Di fatto, contraddice l’obbiettivo di separazione tra struttura e presentazione, e un giorno ti sopraffarà . [...]

Cosa c’è di sbagliato nel commento condizionale? Due cose importanti:

  1. Nonostante sia sintatticamente valido non è standard compliant:
    l’informazione che compare tra i commenti non ha significato e i commenti
    saranno ignorati dal parser.
  2. Il commento condizionale modifica l’HTML, compromettendo la separazione
    tra struttura e presentazione in ogni caso. Pensaci su. [..] àˆ più semplice e “pragmatico” usare i peggiori (ma validi) hack, filtro o workaround che trovi. Almeno vivono nel foglio di stile.

Personalmente mi trovo abbastanza in disaccordo. Quanto al primo punto:
il commento condizionale è perfettamente standard. Ogni browser che non sia IE vedrà  tutto cià che è incluso nel commento condizionale come un commento, appunto. àˆ una soluzione proprietaria è vero, ma è per risolvere un problema proprietario, ovvero un bug specifico di IE. Non c’è niente di nocivo per gli altri browser, né ora né in futuro.

Sul secondo punto: è vero, il commento condizionale richiede l’editing dell’HTML, e devo confessare che questo è piuttosto noioso. Ma anche i fogli di stile esterni “normali” necessitano dell’editing dell’HTML.
Inoltre, con il commento condizionale non si va a modificare la sua struttura né il suo contenuto, dato che il resta confinato alle versioni di Internet Explorer a cui è indirizzato.

Per cià che riguarda workaround, filtri e hack: hanno un
vantaggio locale rispetto al commento condizionale, dato che riescono a mantenere la centralità  delle regole CSS al contrario del CC. Fatta eccezione per i workaround però, filtri ed hack purtroppo non si rivelano il più delle volte a prova di futuro come il commento condizionale.

Ci sono due classi di soluzioni CSS che è possibile adottare per combattere un bug: quelle che fanno leva sulla carenza di supporto di selettori e keywords di un browser specifico da una parte, e quelli che sfruttano difetti del parser dall’altra. Quest’ultima classe di soluzioni, sebbene sia in grado oggi di risolvere un problema, potrebbe risultare instabile sui browser che
verranno, estendendo e prolungando il problema invece che confinarlo. àˆ proprio la classe di soluzioni che abbandonerei a favore del commento condizionale se non fosse possibile altrimenti.

Chiudo qui con le riflessioni, ma ci terrei a sapere la vostra opinione in proposito…. domanda: se doveste scegliere tra usare un hack o il commento condizionale, quale preferireste?

Share and Enjoy

  • Facebook
  • Twitter
  • Delicious
  • LinkedIn
  • StumbleUpon
  • Add to favorites
  • Email
  • RSS
7 CommentiDi' la tua

Il tuo indirizzo email non sarà mostrato pubblicamente. I campi obbligatori sono contrassegnati da *

Voto commento condizionale, a patto che contenga solo il link a un css specifico x IE, e che il css x IE sia contenuto a poche dichiarazioni.

paperogiallo
paperogiallo

io preferisco gli hack, conosco le altre tecniche ma quando si devono apportare modifiche (e di fretta) un buon hack e' piu' rapido che toccare diversi css/files. Che poi devi rilasciare ecc...

persoperilmondo
persoperilmondo

workaround XOR commento condizionale :D L'unico hack che mi permetto di utilizzare, anche se raramente, é !important x IE 6

Epper
Epper

Non ho mai sentito tale Meiert per cui non so il suo se sia un parere autorevole o quello di un qualsiasi blogger, ma risponderei così alle due affermazioni 1) Da un punto di vista sintattico un c.c. é standard compliant: a tutti gli effetti si tratta infatti di un commento valido per il linguaggio (X)HTML. Il fatto che un parser ne salti il contenuto (come nei restanti commenti se ce ne sono) non lo rende di per sé non standard. Questa affermazione implica quindi che un documento in cui sia presente un commento non sia standard (e non mi pare sia così). Se parliamo invece di significato semantico, l'errore non risiede nel commento in sé, bensì nella scelta di uno specifico browser (Explorer) di dargliene uno: quindi é il browser a non rispettare uno standard, e non il codice o il programmatore. 2) Come suggerisce tale Meiert ci ho pensato su alla seconda affermazione e mi pare del tutto errata. Se consideriamo il c.c. come puro commento standard non viene aggiunta presentazione dentro il contenuto. Dal punto di vista di IE é un collegamento ad un css esterno: dunque in che modo comprometterei la separazione tra struttura e presentazione più di quanto non faccia già  includendo i miei CSS in modo standard? Si potrebbero invece trovare numerose (e inopinabili) controindicazioni nell'uso degli hack (che sono state recentemente riassunte su un post di questo blog se non ricordo male) Sono infine assolutamente d'accordo sul fatto di trovare un workaround prima di creare un c.c. ad hoc quando si potrebbe evitare.

Fabrizio Calderan
Fabrizio Calderan

Hack forever. Al di la che il commento condizionale me lo scordo SEMPRE, l'hack é sempre modificabile e aggiornabile. Preferisco avere un solo telecomando che due. Ma a fronte di questo, vorrei sottolineare un aspetto. Io non riesco a capire una cosa: é sconvolgente solo per me che si dedichino discussioni, libri, forum, tutorial sui DIFETTI di un prodotto, tra l'altro IL PIU' USATO AL MONDO, senza che la casa madre faccia nulla?

Matteo
Matteo

niente hack, solo condizionale

Salvatore PECORARO
Salvatore PECORARO

ovviamente il condzionale attivato con la versione IE corrente e inferiori, con all'interno un link a css esterno con le correzioni x IE stesso. E mi pare che Mejert abbia scritto una sciocchezza infame. Soprattutto al punto 2. Se inserisco il link ad un altro Css dov'é la modifica all'Html?

Jan
Jan