Quirks mod

Из Википедије, слободне енциклопедије
Иди на навигацију Иди на претрагу

U računarstvu quirks mod se odnosi na tehniku nekih internet pregledača u korist održavanja kompatibilnosti veb strana sa starijim verzijama pregledača, umesto da se striktno pridržava standarda W3C i Internet inženjerska operativna grupe.

Pregled[уреди]

Strukturu i prikaz veb strane koja je opisana kombinacijom dva standardizovana jezika 1) HTML, je jezik dizajniran za opis veb stranica, koji opisuje strukturu i sadržaj strane, i 2)CSS, jezik formatiranja pomoću kog se definiše izgled elemenata veb stranica. Ipak, većina starih pregledača ili nije u potpunosti implementirala specifikacija za ove jezike ili su napravljeni pre finalizacije ovih specifikacija (Internet Explorer verzija 5.0 za Makintoš platformu, koji je izasao 2000 godine, bio je prvi veliki veb pregledač sa potpunom podrškom za CSS nivo 1).[1] Kao rezultat, vecina startih stranica su konstruisane da se oslanjaju na to da stariji pregledači imaju nepotpunu ili netačnu implementaciju, i da će prikazati stranicu ispravno kada budu došli do takvih pregledača.

Podrška za standardizovani HTML i CSS u većini veb pregledača se popravlja drastično, ali stari dokumenti koji se oslanjaju na osobine starih pregledača predstavljaju prepreku za developere pregledača, koji žele da unaprede njihovu podršku za standardizovani HTML i CSS, ali takođe žele i da održavaju kompatibilnost sa starijim verzijama i ne standardizovanim stranama. Dodatno, mnoge nove strane nastavljaju da se prave po starom običaju, posto kompatibilnost omogućava da se ne mora pridržavati standardizovanim metodima.

Da bi se održavala kompatibilnost sa najvećim mogućim brojem strana, moderni web pregledači su generalno napravljeni sa više načina čitanja strana: u "standardnom modu" strane se učitavaju prema HTML i CSS specifikiacijama, dok u "quirks modu" pokušava se simulacija ponašanja starih pregledača. Neki pregledači (oni koji su bazirani na Mozilinoj Gecko raspoređivačkoj mašini) ili Internet Explorer 8 u striktnom modu, npr.) takodje koriste "skoro standardne" metode koji pokušavaju da naprave kompromise.[2]

Razlike modova i primeri[уреди]

Jedna bitna razlika izmedju quriks i standardnih modova je rukovanje sa CSS. Pre verzije 6, Internet Explorer je koristio algoritam koji odlučuje širinu elementa kutije koji je bio u konfliktu sa algoritmom opisanom u CSS specifikaciji, i zbog popularnosti Internet Explorera mnoge strane su napravljene tako da se ne pridržavaju standardnom algoritmu. Od verzije 6, Internet Explorer koristi CSS specifikacioni algoritam kada učitava u standardnom modu, a koristi prethodni ne standardni algoritam kada učitava u quirks modu.


Jos jedna bitna razlika je vertikalno postavljanje odredjenih inline elemenata; mnogi stari pregledači redjaju slike uz donju granicu kutije, iako u CSS specifikaciji se zahteva da budu uz tekst unutar kutije. U standardnom modu Gecko zasnovani pregledači će redjati uz osnovnu liniju, a u quirks modu ce redjati uz donju granicu.[3]

Dodatno, dosta starih pregledača nije implementirao nasleđivanje font stilova unutar tabela; i kao rezultat, font stilovi su morali da budu specifirani jednom za ceo dokment, i onda opet za tabelu, iako CSS zahteva da font bude nasledjen. Ako su veličine fonta specifirane koristeci relativne jedinice mere, standardni pregledači bi nasledili osnovnu veličinu fonta, a onda stavili relativnu veličinu fonta unutar tabele: npr. ako je za stranu deklarisan bazna font veličina od 80%, i za tabelu veličina od 80%(da bi se osigurala veličina od 80% u pregledačima koji ne nasleđuju veličine ispravno) bi, u standardnim pregledačima, prikazali tabele sa veličinom fonta od 64%. Kao rezultat, pregledači obično ne nasleđuju veličine fontova za tebele u quirks modu.[4]

Skoro standardan mod[уреди]

Treći kompatibilni mod poznat kao "skoro standardan mod" ili "striktni mod" koji održava "tradicionalni" vertikalnu veličinu ćelija tabela uzimajući u obzir CSS2 specifikaciju, koja je implementirana u sledećim pregledačima : Safari, Opera 7.5(i kasnije), svi Gecko zasnovani pregledači od 1.0.1 (Firefox) i Internet Explorer 8.[2]

"Skoro standardni" mod se poklapa sa "standardnim" u svim detaljima osim jednog. Raspored slika unutar ćelija tabele se radi isto kao u "quirks" modu, sto je konzistentno sa pregledačima kao što su Internet Explorer 7(i ranije verzije). Ovo znači da sečene slike u tabelama se neće raspasti u pregledačima koji su u "quirks" ili "skoro standardnom" modu, naprotiv "standardnom" modu.[5]

Uključivanje modova za učitavanje[уреди]

Često, pregledači određuju koji mod će biti korišćen baziran na postojanju Document type declaration u stranici; ako postoji DOCTYPE u pregledaču on će koristiti standardan mod, inače će koristiti quirks mod. Na primer, stranica koja počinje sa sledećim DOCTYPE bi uključio standardni mod:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">

Sledeći DOCTYPE je sintaksno netačan, sadrži ključnu reč "PUBLIC" ali nema identifikator za public(koji mora da kaže verziju HTML koja se koristi), i nema sistemski identifikator, URL HTML-a. Ovo bio pokrenulo quirks mod:

<!DOCTYPE html PUBLIC>

Stranica koja ne uključi DOCTZPE će se pokrenuti u quirks modu.

Jedan izuzetak za ovo je Mikrosoftov Internet Explorer 6, koji će pokrenuti stranicu u quirks modu ako je DOCTYPE prethodio XML prologu, čak iako je DOCTYPE naveden. XHTML strana koja počinje sa sledećim kodom bila bi pokrenuta u quirks modu u IE 6:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

Ovo je korisno do te mere da može biti korišćeno kao okidač za quirks mod samo u IE 6.

Quirks mod u bilo kojoj verziji IE će takođe biti pokrenut ako bilo sta prethodi DOCTYPE-u. Na primer, ako hipertekst dokument sadrži komentar, razmak, ili bilo koji tag, IE će koristiti quirks mod:

<!-- This comment will put IE 6, 7, 8, and 9 in quirks mode -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">


Problem sa XML deklaracijom je popravljen u verziji 7 Internet Explorera, u kojoj XML prolog se jednostavno ignoriše[6]. Ipak, za maksimalnu kompatibilnost sa postojećim i starijim pregledačima, World Wide Web Consortium, koji održava XHTML specifikacioju, predlaže da bi autori XHTML dokumenata mogli da uzmu u obzir i izbegavanje XML deklaracije.[7]


Komparacija tipova dokumenata[уреди]

Henri Sivonen je napravio list različitih tipova dokumenata i način na koji su oni obrađeni u većini standardnih pregledača, pokazujući strane koje bi bile prikazane u in Quirks, Standardnom ili Almost standards mode(skoro standardnom modu). Kriterijum korišćen za skoro standardni mod je ucitavanje ne standardne visine ćelija tabela . Ova tabela primenjuje sadržaj koji dolazi sa Internet medija tipom text/html. Sadržaj sa tipom application/xhtml+xml se učitava u Standardnom modu u Chrome, Firefox, IE 9, Safari i Opera pregledačima. IE 6, 7 i 8 ne podržavaju taj tip.[2]

Doctype NS6 Mozilla 0.9.5-1.0 IE 8+
Firefox
Chrome
Safari
Opera 7.5+
Netscape 7+
Mozilla 1.0.1+
Konq 3.5+
HTML5 spec
IE 7
Opera 7.10
IE 6
Opera 7.0
Mac IE 5 Konq 3.2
None Q Q Q Q Q Q Q
HTML 2
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> Q Q Q Q Q Q Q
HTML 3
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.0//EN//"> Q Q Q Q Q Q Q
HTML 3.2
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> Q Q Q Q Q Q Q
HTML 4.01
Strict with system identifier
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
S S S A A A A
without system identifier
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
S S S A A Q A
Transitional with system identifier
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
S S A A A A Q
without system identifier
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
Q Q Q Q Q Q Q
HTML5
<!DOCTYPE html> Q S S A A A ?
XHTML Basic
with system identifier and without XML declaration
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.0//EN" "http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd">
S S S A A A A
XHTML 1.0
Strict with system identifier and XML declaration
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
S S S A Q A Q
with system identifier and without an XML declaration
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
S S S A A A A
without system identifier and without an XML declaration
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN">
S S S A A A ?
Transitional with system identifier and with XML declaration
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

S S A A Q A Q
with system identifier and without an XML declaration
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
S S A A A A Q
without system identifier and without an XML declaration
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">
S S A A A A ?
XHTML 1.1
with system identifier and an XML declaration
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
S S S A Q A Q
with system identifier and without XML declaration
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
S S S A A A A
Doctype NS6 Mozilla 0.9.5-1.0 IE 8+
Firefox
Chrome
Safari
Opera 7.5+
Netscape 7+
Mozilla 1.0.1+
Konq 3.5+
HTML5 spec
IE 7
Opera 7.10
IE 6
Opera 7.0
Mac IE 5 Konq 3.2


Verifikacija modova[уреди]

U većini pregledača, Objektni model dokumenta ekstenzija document.compatMode pokazuje mod za učitavanje trenutne strane. U standardnom modu i skoro standardnom modu document.compatMode sadrži vrednost "CSS1Compat", dok u quirks modu je "BackCompat" [8]


Dodatno, u Mozila Firefox i Opera pregledačima, učitavanje koje koriste može se pronaći u 'Page info'.


Reference[уреди]

  1. ^ „Cascading Style Sheets: CSS Browsers”. World Wide Web Consortium. 19. 12. 2001. Приступљено 27. 5. 2007. 
  2. 2,0 2,1 2,2 Sivonen, Henri. „Activating Browser Modes with Doctype”. Приступљено 15. 3. 2011. 
  3. ^ „Images, Tables, and Mysterious Gaps”. Mozilla Developer Center. Приступљено 27. 5. 2007. 
  4. ^ „Fixing Table Inheritance in Quirks Mode”. Mozilla Developer Center. Приступљено 27. 5. 2007. 
  5. ^ „Gecko's "Almost Standards" Mode”. Mozilla Developer Center. Приступљено 27. 5. 2007. 
  6. ^ Wilson, Chris (15. 8. 2005). „The <?xml> prolog, strict mode, and XHTML in IE”. IEBlog. MSDN. Приступљено 27. 5. 2007. 
  7. ^ „HTML Compatibility Guidelines”. XHTML 1.0 The Extensible HyperText Markup Language (Second Edition). World Wide Web Consortium. 1. 8. 2002. Приступљено 14. 2. 2009. 
  8. ^ Koch, Peter-Paul (2. 2. 2009). „Miscellaneous”. W3C DOM Compatibility - HTML. QuirksMode. Приступљено 14. 2. 2009. 

Spoljašnje veze[уреди]