Sia cambiando DOCTYPE rompere le funzioni JavaScript davvero dipende da come difensiva tali funzioni sono progettate :)
Ad esempio, quando il documento è reso in modo quirks, document.body
(BODY) diventa una cosiddetta "radice elemento"; quando viene eseguito il rendering in modalità standard, l'elemento radice di solito è un document.documentElement
(HTML). Questa è una distinzione piuttosto sostanziale. Se uno script che determina le dimensioni dello schermo del browser interroga sempre le proprietà clientWidth
/clientHeight
su document.documentElement
, verrà ovviamente segnalato un risultato errato in modalità quirk (poiché, IIRC, document.documentElement.clientWidth/clientHeight
rappresenterebbe le dimensioni dell'elemento HTML, piuttosto che quelle dello schermo).
La maggior parte delle librerie JS di solito indica in modo esplicito se è supportata la modalità quirks (we - Prototype.js - per esempio, non supporta la modalità quirk).
Parlando di HTML vs XHTML, al fine per il browser per rendere documento XHTML, è necessario prima di tutto servire con una corretta intestazione "Content-Type" (vale a dire application/xhtml + xml). Se si cambia solo doctype a XHTML, ma ancora servire documento come "text/html", la maggior parte dei browser so saranno ancora analizzare (e rendering) come documento HTML.
Si noti che fino ad oggi IE non comprende il contenuto XHTML "reale", motivo per cui è consigliabile utilizzare documenti come text/html (con doctype HTML4.01) (a meno che IE non sia tra i browser supportati , ovviamente).
Per quanto riguarda la peculiarità DOM nei documenti "reali" XHTML, ho sentito dire che alcune cose come document.write
"non funzionano" e che accedono gli attributi dei nodi devono essere sempre eseguiti tramite getAttribute/setAttribute
(piuttosto che attraverso semplici di accesso alle proprietà) . IIRC, ci sono anche alcuni problemi con innerHTML
.
La mancanza di informazioni sui DOM nei documenti XHTML "reali" è probabilmente dovuta alla sua non praticità nei documenti/applicazioni per il Web generale (cioè la mancanza di supporto di IE per questo).
In alcune delle modalità documento, gli elementi dom non ereditano da Object.prototype e, a causa di ciò, non sono estendibili con metodi o proprietà personalizzati ... – inf3rno