La dichiarazione DOCTYPE deve essere il primo tag in un documento HTML?[duplicare]

StackOverflow https://stackoverflow.com/questions/69828

  •  09-06-2019
  •  | 
  •  

Domanda

Questa domanda ha già una risposta qui:

Il nostro responsabile della sicurezza inserisce dinamicamente un po' di javascript nella parte superiore di ogni pagina html quando una pagina viene richiesta dal cliente.Viene inserito sopra l'istruzione DOCTYPE.Penso che questa potrebbe essere la causa dei problemi di layout che sto riscontrando.

Qualcuno ha idee?

È stato utile?

Soluzione

Sì, DOCTYPE deve essere il primo dato nella pagina: http://www.w3schools.com/tags/tag_DOCTYPE.asp

Altri suggerimenti

Sì, il DOCTYPE deve venire prima.

La definizione è qui: http://www.w3.org/TR/REC-html40/struct/global.html.Tieni presente che dice che un documento è composto da tre parti e la DTD deve essere la prima.

La raccomandazione per HTML lo esprime come un'applicazione di SGML, che richiede che il file DOCTYPE dichiarazione appare prima dell'elemento HTML (ignorando i commenti HTML).Anche senza il DOCTYPE, aggiungendo a SCRIPT elemento esterno a HTML L'elemento (prima o dopo) non è un HTML valido.Naturalmente, la validità dell'HTML potrebbe non essere un requisito per te, purché funzioni nella maggior parte dei browser, e quindi il cambio di modalità quirk menzionato ti porterà:senza il DOCTYPE, molti browser passeranno alla modalità quirk, eventualmente modificando il layout.

Presumo che il frammento dello script TAM venga aggiunto da qualche proxy o altro che non è in grado di analizzare correttamente la struttura HTML della pagina e inserire il SCRIPT nella posizione corretta nel HEAD O BODY del documento.In questo caso, l'aggiunta alla fine del documento, sebbene non sia un codice HTML valido, funzionerà nella maggior parte dei browser web.

Potrebbe però essere la fonte del tuo problema!Controlla la "modalità quirks" poiché dipende dalle impostazioni del doctype.Ulteriori studi: http://www.quirksmode.org/spiegazione:puoi attivare/disattivare il browser in modalità compilante con standard rigorosi (principalmente IE) e in modalità libera.Ciò influenzerà notevolmente il rendering.L'impostazione della segreteria telefonica potrebbe aver attivato/disattivato questa opzione.

Ho letto le specifiche w3 che dicono semplicemente che ci sono 3 parti in un documento.La sequenza è presupposta e non esiste alcuna dichiarazione esplicita che vieti, ad esempio, un piccolo snippit js in primo piano.

Capisco che sia possibile configurare TAM per aggiungere js alla fine del documento, ma non capisco perché lo abbiano messo in alto se può causare problemi così evidenti!

W3c (su w3.org), su una pagina chiamata html5/sintassi.html, dice "a DOCTYPE è un preambolo richiesto" che interpreto nel senso che è necessario e che deve venire prima.

Dice anche che deve essere costituito dai seguenti componenti in questo ordine:

  1. Una stringa che rappresenta una corrispondenza ASCII senza distinzione tra maiuscole e minuscole per la stringa <!DOCTYPE.
  2. Uno o più caratteri spaziali.
  3. Una stringa che rappresenta una corrispondenza ASCII senza distinzione tra maiuscole e minuscole per la stringa html.
  4. Facoltativamente, una stringa legacy DOCTYPE o una stringa DOCTYPE consentita obsoleta (definita di seguito).
  5. Zero o più caratteri spaziali.
  6. UN > (U+003E) carattere.

Sì, il doctype deve essere la prima cosa nel documento (ad eccezione dei commenti).Dovresti evitare di inserire script prima del doctype;i parser conformi non sono tenuti ad accettarlo.(Dovrebbero accettare gli script aggiunti Dopo il resto del documento, se questa è un'alternativa.)

Dalle specifiche HTML 5:

8.1 Scrivere documenti HTML

Questa sezione si applica solo a documenti, strumenti di creazione e generatori di markup.In particolare, non si applica ai controllori di conformità;> i controllori di conformità devono utilizzare i requisiti indicati nella sezione successiva > ("analisi di documenti HTML").

I documenti devono essere costituiti dalle seguenti parti, nell'ordine indicato:

  1. Facoltativamente, un singolo carattere "BOM" (U+FEFF).
  2. Qualsiasi numero di commenti e caratteri di spazio.
  3. UN DOCTYPE.
  4. Qualsiasi numero di commenti e caratteri di spazio.
  5. L'elemento root, sotto forma di elemento html.
  6. Qualsiasi numero di commenti e caratteri di spazio.
  7. I vari tipi di contenuto sopra menzionati sono descritti nelle prossime sezioni.

Dalla specifica HTML 4.01:

7 La struttura globale di un documento HTML

Un documento HTML 4 è ​​composto da tre parti:

  1. una riga contenente informazioni sulla versione HTML,
  2. una sezione di intestazione dichiarativa (delimitata dall'elemento HEAD),
  3. un corpo, che contiene il contenuto effettivo del documento.Il corpo può essere implementato dall'elemento BODY o dall'elemento FRAMESET.

[...]

Gli spazi bianchi (spazi, ritorni a capo, tabulazioni e commenti) possono essere visualizzati prima o dopo ciascuna sezione.

[...]

Un documento HTML valido dichiara quale versione di HTML viene utilizzata nel documento.La dichiarazione del tipo di documento nomina la definizione del tipo di documento (DTD) in uso per il documento (vedere [ISO8879]).

Non è un tag, ma sì.Principalmente perché è l’unico modo per portare Internet Explorer (pre-versione 8, credo) in modalità standard.

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