Quirks mode: cosa è esattamente??
Domenica, Dicembre 23rd, 2007Il tutto nasce agli albori della guerra tra i browser che fortunatamente ora sta andando sempre di più verso un favorevole epilogo, favorevole per gli utenti, cioè una implementazione sempre migliore degli standard w3c. Ma non è stato sempre così…Andiamo con la memoria ai tempi della versione 4 di Explorer e di Netscape. A quei tempi, l’implementazione dei CSS era a dir poco sconcertante e sebbene Explorer li rispettasse maggiormente di quanto non facesse Netscape, i siti venivano comunque visti in maniera non corretta.
Explorer 5 ovviò a parecchi bug, ma l’implementazione era lontana dall’essere rispettata in maniera perfetta. Gli sviluppatori pertanto dovevano progettare i propri siti cercando in tutti i modi di adattarsi ai diversi browser e per questo il codice non era molto rispettoso degli standard. Quando poi il rispetto degli standard divenne importante, i produttori dei browsers si trovarono di fronte ad un grosso problema, infatti i siti che avrebbero rispettato gli standard sarebbero stati visualizzati correttamente mentre quelli progettati precedentemente e con un supporto agli standard misero, sarebbero stati visualizzati in maniera non corretta. Pertanto, i browsers dovevano favorire chi conosceva gli standard e progettava secondo questi, ma nondimeno dovevano permettere alle pagine non correttamente sviluppate, di essere viste in maniera decente. La soluzione a questo fu appunto la creazione di browser in grado di riconoscere le pagine sviluppate correttamente e quindi visualizzare secondo gli standard, e quelle non correttamente sviluppate e quindi visualizzarle con una modalità non conforme, detta appunto “quirks mode”. Per fare ciò il browser si affida al DOCTYPE e in base a questo decide come visualizzare la pagina. Fare questo viene definito “doctype switching” e viene implementato come segue:
-
Un doctype completo XHTML 1.0 o 1.1 attiva la modalità Standards (secondo gli standard) in versioni conformi di IE e nelle prime versioni di Gecko (Netscape 6 e Mozilla 1.0)
-
Un doctype completo XHTML Strict ha lo stesso effetto in tutti i browser sopra elencati con l’aggiunta di mozilla 1.01+, netscape 7, firefox 1+, camino
-
Un doctype completo XHTML 1.0 Transitional o Frameset attiva la modalità “Quasi Standards” negli ultimi browsers Gecko
-
Inoltre, a proposito del prologo XML, nonostante abbiamo inserito un doctype completo e che quindi dovrebbe attivare la modalità standard, con il prologo xml, IE6 per Win e Opera 7, vi porteranno in modalità Quirks
-
Doctype incompleti attivano la modalità Quirks in tutti i browsers che implementano il doctype switching
Già, avete sentito bene, c’è anche una modalità “Quasi Standards”. Si chiama così perché differisce dalla modalità Standards di IE per qualche dettaglio. Per questi dettagli, per il modo in cui si comportano i browser con le varie modalità, vi rimando prossimamente per un post a riguardo, dove inizierò a parlare del “BOX MODEL” dei vari browsers, non mancate!
Ritornando all’XHTML è quindi più rigido dell’HTML classico. Una specifica Document Type Definition (DTD) definisce l’insieme di regole mediante le quali un dato documento può essere renderizzato (cioè rappresentato correttamente) dall’XHTML. La maggior parte dei browser attualmente più diffusi è già in grado di renderizzare correttamente i documenti XHTML. Ma anche i browser più vecchi sono solitamente in grado di interpretare i documenti XHTML, poiché questo linguaggio è in buona parte un sottoinsieme dell’HTML. Lo stesso vale anche in senso inverso: quasi tutti i browser compatibili con l’XHTML renderizzano correttamente i documenti HTML. Secondo un’opinione diffusa, questo alto grado di compatibilità sta rallentando il passaggio da HTML a XHTML. L’XHTML Transitional si distingue dall’HTML principalmente perché è più compatibile con le specifiche dell’XML. La differenza più importante è che tutti i tag devono essere ben strutturati. Inoltre i tag devono essere sempre scritti in lettere minuscole, convenzione in contrasto con l’abitudine invalsa a partire dalla versione 2.0 di HTML, quando la maggior parte dei programmatori preferiva le maiuscole. Nell’XHTML tutti gli attributi (compresi quelli numerici) devono essere scritti fra virgolette, cosa facoltativa in SGML e HTML, in cui le virgolette possono essere omesse se il contenuto è una stringa alfanumerica o comprende alcuni altri caratteri speciali riservati. Tutti gli elementi del linguaggio devono inoltre essere terminati, compresi quelli vuoti (ad esempio 















