Domanda

Vorrei inserire un commento (<!-- this --> stile) nella parte superiore del mio codice HTML, che precede la dichiarazione DOCTYPE.Questo non conformi agli standard?È supportato dai principali browser?Ci sono insidie nel fare questo?

È stato utile?

Soluzione

Iscritto il <!DOCTYPE> il primo è certamente la cosa migliore pratica.

Mi ricordo di strani problemi un lungo, lungo tempo fa, in cui alcuni browser (probabilmente IE6) ignorato un <!DOCTYPE> perché c'era qualcosa di apparentemente innocente prima, penso solo lo spazio, ma forse si trattava di un commento.In ogni caso, è stato un orribile, orribile bug sono da rintracciare, e non c'è mai alcun buon motivo per commenti o uno spazio prima della <!DOCTYPE>.

Iscritto il <!DOCTYPE> prima è, direi, solo qualcosa di esperti sviluppatori web fare per evitare di orribile, sfuggente bug.

Altri suggerimenti

È pienamente valida fare

<!-- this, -->
<!DOCTYPE html>

Tuttavia, porta tutti le versioni di IE in stranezze-modalità di (a meno che non sia costretto in modalità standard — vedi il Trucchi la sezione sottostante).Il più semplice è quello di spostare il commento sotto il DOCTYPE.

<!DOCTYPE html>
<!-- this, -->

Ma un altro modo è quello di “l'aggiornamento” il commento in un adatto condizionale commento, come questo:

<!--[if !IE]> this <![endif]-->
<!DOCTYPE html>

Spiegazione: un condizionale commento non conte come commento, in IE del mondo.

Sintassi alternativa: Per dimenticare/ricordate che i commenti condizionali sono un Microsoft intrusione in HTML standard, si potrebbe per esempio fare

<!--[if anybrowser]> this <![endif]-->
<!DOCTYPE html>

Allo stesso modo, per destinazione, vale a dire in particolare, si potrebbe fare

<!--[if !anybrowser]> this <![endif]-->
<!DOCTYPE html>

Trucchi

Un commento all'interno un commento condizionale porterà IE in quirks mode se IE lo vede (che è: se si utilizza un [if IE] condizione, o di un equivalente [if IE] — come il [se !anybrowser] condizione che ho citato sopra.).Così, per esempio, questo porterebbe IE in quirks mode:

<![if IE]><!-- this --><![endif]>
<!DOCTYPE html>

Come vorresti

<!--[if IE]><!--><!-- this <![endif]-->
<!DOCTYPE html>

e molte altre varianti.Mentre per esempio

<!--[if IE]><!DOCTYPE html><!--><!-- this <![endif]-->
<!DOCTYPE html>

sarebbe non causa stranezze-mode, perché qui il condizionale commento, ha un DOCTYPE prima qualsiasi altro il contenuto, e quindi IE ritiene che il primo contenuto della pagina è un DOCTYPE.

Infine, le più recenti versioni IE, IE8 e IE9, può essere costretto standard-modalità (e a stranezze-modalità) dall'uso di un'altra invenzione di Microsoft — il x-ua-compatible direttiva.Vedere http://msdn.microsoft.com/en-us/library/cc288325(v=vs. 85).aspx In questo caso, quindi

<!-- this -->
<!DOCTYPE html>
<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=8" ><![endif]-->

sarà forza IE8 e IE9 in no-stranezze modalità, mentre IE6 e IE7 rimarrà in stranezze la modalità.Mentre, al contrario, questo

<!--[if gte IE 8]><meta http-equiv="X-UA-Compatible" content="IE=8" ><![endif]-->
<!DOCTYPE html>

sarebbe forza IE8 e IE9 in modalità standard, nonostante che il contenuto del condizionale commento non iniziare con un DOCTYPE.E IE6 e IE7 rimarrà nel no-modalità standard in quanto il condizionale commento non target.

Mentre è accettabile per gli standard credo, è sicuramente vuole evitare di usarlo, come si butto IE in modalità non standard.

(Vedere Attivazione di diversi modi di rendering)

Che può causare IE7 per il rendering in modalità come se un doctype non c'era affatto, secondo questa pagina.

Commenti prima del doctype sono ammessi, ma causa tutti Le versioni IE per ritornare alla modalità standard.Essi sono, in realtà, utilizzato per tale scopo, a volte.La dichiarazione XML (<?xml version ...?>) hanno lo stesso effetto, in IE6 e sotto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top