Iwanan ang Doctype upang Ilagay ang Mga Browser sa Quirks Mode
Kung nag-disenyo ka ng mga web page nang higit pa sa ilang buwan, malamang na alam mo ang kahirapan sa pagsusulat ng isang pahina na mukhang pareho sa lahat ng mga browser . Sa punto ng katotohanan, imposible iyon. Maraming mga browser ay nakasulat na may mga espesyal na tampok na maaari lamang nilang hawakan. O mayroon silang mga espesyal na paraan ng paghawak ng mga bagay na iba sa kung paano gagamitin ng ibang mga browser ang mga ito. Halimbawa:
- Nilikha ang mga layer para magamit sa mga browser ng Netscape. Hindi ito gumagana sa anumang iba pang browser, at sa katunayan ay hindi na ginagamit sa Netscape 6.x +.
- Ang orihinal na mga frame ay orihinal na nilikha para sa Internet Explorer lamang, at mula noon ay naging bahagi ng pagtutukoy ng HTML.
- Ang Internet Explorer 6.0 ay nagdaragdag ng isang karagdagang puwang (tulad ng isang
) nakapalibot tag, maliban kung isulat mo ang mga nilalaman ng div lahat sa isang (mahaba) linya. (IE 6 ay may maraming iba pang mga quirks pati na rin ang isang ito.) - Ang Netscpe 4.7 ay hindi magpapakita ng mga talahanayan na hindi nakasulat sa tamang HTML - ito ay nagpapakita ng isang blangkong pahina sa halip. Naayos ito sa Netscape 6.
Ang problema para sa mga nag-develop ng browser ay mayroon silang gumawa ng mga web browser na pabalik na tugma sa mga web page na binuo para sa mas lumang mga browser. Upang makitungo sa isyung ito, lumikha ng mga browser maker ang mga mode para magamit ang mga browser. Ang mga mode na ito ay tinukoy sa pamamagitan ng presensya o kawalan ng elemento ng DOCTYPE at kung ano ang tawag ng DOCTYPE.
Paglipat ng DOCTYPE at "Quirks Mode"
Kung inilagay mo ang sumusunod na DOCTYPE sa iyong web page:
Mga modernong browser (Android 1+, Chrome 1+, IE 6+, iOS 1+, Firefox 1+, Netscape 6+, Opera 6+, Safari 1+) ay mabibigyang-kahulugan ito sa sumusunod na paraan:
- Dahil mayroong isang wastong nakasulat na DOCTYPE, pinalitaw nito ang mga mode ng pamantayan.
- Ito ay isang HTML 4.01 Transitional na dokumento
- Dahil sa mode na pamantayan, ang karamihan sa mga browser ay magbibigay ng sumusunod na nilalaman (o karamihan ay sumusunod) sa HTML 4.01 Transitional
At kung inilagay mo ang DOCTYPE na ito sa iyong dokumento:
Sinasabi nito ang mga modernong browser na nais mong ipakita ang iyong HTML 4.01 na pahina sa mahigpit na pagsunod sa DTD.
Ang mga browser na ito ay papunta sa "mahigpit" o "mga pamantayan" na mode at i-render ang pahina sa pagsunod sa mga pamantayan. (Kaya, para sa dokumentong ito, ang mga tag tulad ay maaaring ganap na binalewala ng browser, dahil ang elemento ng FONT ay na-deprecate sa HTML 4.01 Strict.)
Kung iniwan mo ang DOCTYPE out ganap, ang mga browser ay awtomatikong kicked sa "quirks" mode.
Ang talahanayan sa ibaba ay nagpapakita kung ano ang ginagawa ng mga karaniwang browser kapag iniharap sa iba't ibang mga karaniwang deklarasyon ng DOCTYPE.
Ginagawang Mas Mahirap ang Microsoft
Mayroon ding tampok ang Internet Explorer 6 na kung ilagay mo ang anumang bagay sa itaas ng deklarasyon ng DOCTYPE, pupunta sila sa mode ng quirks. Kaya, pareho ng mga halimbawang ito ay maglalagay ng IE 6 sa mga mode ng quirks, kahit na sinasabi ng mga deklarasyon ng DOCTYPE na nasa mahigpit na pamantayan na mode:
at ang XHTML 1.1 DOCTYPE:
Dagdag pa, kung nakakuha ka ng nakaraang IE6, mayroon kang "tampok" na idinagdag ng Microsoft sa IE8 at IE9: META element switching at blacklisting ng website. Sa katunayan, ang dalawang bersyon ng browser na ngayon ay may hanggang sa pitong (!) Iba't ibang mga mode:
- IE 5.5 quirks mode (IE 8 at 9)
- IE 7 standard mode (IE 8 at 9)
- IE 8 halos pamantayan mode (IE 8 at 9)
- IE 8 standard mode (IE 8 at 9)
- IE 9 halos pamantayan mode (IE 9)
- IE 9 standard mode (IE 9)
- XML mode (IE 9)
Ipinakilala rin ng IE 8 ang "Kakayahan na Mode" kung saan maaaring piliin ng user na baguhin ang rendering na modelo pabalik sa IE 7 mode. Upang kahit na itakda mo ang mode na nais mong itakda gamit ang parehong mga elemento ng DOCTYPE at META, maaari pa ring itulak ang iyong pahina sa mas kaunting mga mode na sumusunod sa pamantayan.
Ano ang Quirks Mode?
Ang mode ng Quirks ay nilikha upang matulungan ang pakikitungo sa lahat ng kakaibang rendering at di-sang-ayon na suporta sa browser at mga hack na ginagamit ng mga taga-disenyo ng web upang harapin ang mga bagay na iyon. Ang pag-aalala na ang mga tagagawa ng browser ay na kung inililipat nila ang kanilang mga browser sa ganap na pagsunod sa pagtutukoy, ang mga taga-disenyo ng web ay maiiwan.
Sa pamamagitan ng pag-set up ng DOCTYPE switching at "Quirks Mode" na pinapayagan ang mga taga-disenyo ng web na piliin kung paano nila nais ang mga browser na mag-render ng kanilang HTML.
Mga Mode ng Effect Quirks
Mayroong maraming mga epekto na ginagamit ng karamihan sa mga browser sa Quirks Mode:
- Sa ilang mga browser, ang modelo ng kahon ay nagbabago sa IE 5.5 na bersyon ng modelo ng box sa quirks mode.
- Ang ilang mga browser ay hindi nagmamay-ari ng mga estilo sa mga talahanayan
- Ang mga mode ng Quirks ay nakakaapekto sa pag-parse ng CSS at CSS layout kapansin-pansing, kung ikaw ay nagko-convert ng mga pahina sa mga pamantayan ng mode mula sa quirks mode, siguraduhin na subukan ang iyong CSS layout at pag-parse ng malawakan.
- Manood ng mga pagbabago sa scripting kapag nasa mode ng quirks. Binabago ng Firefox ang paraan kung paano gumagana ang id attribute, halimbawa. IE8 at IE9 ay may napaka-dramatikong pagbabago sa scripting sa quirks mode.
Mayroon ding pagkakaiba sa "Almost Standards Mode:"
- Ang taas ng mga selula ng talahanayan na may lamang mga imahe sa loob ay nakuwenta nang iba mula sa mga pamantayan na mode.
Paano Pumili ng isang DOCTYPE
Pupunta ako sa mas maraming detalye sa aking artikulo na Lista ng DOCTYPE, ngunit narito ang ilang pangkalahatang alituntunin ng hinlalaki:
- Laging piliin muna ang mga pamantayan ng mode. At ang kasalukuyang pamantayan na dapat mong gamitin ay HTML5: Maliban kung mayroon kang isang tiyak na dahilan upang maiwasan ang paggamit ng HTML5 DOCTYPE, ito ang dapat mong gamitin.
- Pumunta sa mahigpit na HTML 4.01 kung kailangan mo upang patunayan ang mga elemento ng legacy o nais na maiwasan ang mga bagong tampok para sa ilang kadahilanan:
- Kung mayroon kang mga hiniwang larawan sa isang table at ayaw mong ayusin ito, pumunta sa Transitional HTML 4.01:
- Huwag isulat ang mga pahina nang sadya sa mode ng quirks. Laging gumamit ng DOCTYPE. I-save ito sa oras ng pag-unlad sa hinaharap, at talagang walang pakinabang. Ang IE6 ay mabilis na nawawala ang katanyagan at sa pamamagitan ng pagdidisenyo para sa browser na ito (na kung saan ay mahalagang kung ano ang pagdidisenyo sa mode ng quirks) ay nililimitahan mo ang iyong sarili, ang iyong mga mambabasa, at ang iyong mga pahina. Kung dapat kang sumulat para sa IE 6 o 7, pagkatapos ay gamitin ang mga kondisyon na komento upang suportahan ang mga ito, sa halip na pagpilit ng mga modernong browser sa mode na quirks.
Bakit Gamitin ang DOCTYPE
Sa sandaling alam mo na ang ganitong uri ng paglipat ng DOCTYPE, maaari mong makaapekto sa iyong mga web page nang mas direkta sa pamamagitan ng paggamit ng isang DOCTYPE na nagpapahiwatig kung ano ang maaaring asahan ng browser mula sa iyong pahina. Gayundin, sa sandaling simulan mo ang paggamit ng DOCTYPE, magsusulat ka ng HTML na mas malapit sa pagiging wasto (dapat mo pa ring patunayan ito). At sa pamamagitan ng pagsusulat ng wastong XHTML, hinihikayat mo ang mga gumagawa ng browser na bumuo ng mga pamantayan na sumusunod sa mga browser.
Mga Bersyon ng Browser at Mga Mode ng Quirks
DOCTYPE | Android Chrome Firefox IE 8+ iOS Opera 7.5+ Safari | IE 6 IE 7 Opera 7 | Netscape 6 |
---|---|---|---|
Wala | Quirks Mode | Quirks Mode | Quirks Mode |
HTML 3.2 | |||
Quirks Mode | Quirks Mode | Quirks Mode | |
HTML 4.01 | |||
Transisyonal | Mode ng Pamantayan * | Mode ng Pamantayan * | Pamantayan ng Mode |
Transisyonal | Quirks Mode | Quirks Mode | Quirks Mode |
Mahigpit | Pamantayan ng Mode | Mode ng Pamantayan * | Pamantayan ng Mode |
Mahigpit | Pamantayan ng Mode | Mode ng Pamantayan * | Pamantayan ng Mode |
HTML5 | |||
Pamantayan ng Mode | Mode ng Pamantayan * | Quirks Mode | |
* Gamit ang DOCTYPE na ito, ang mga browser ay malapit sa mga pamantayan na sumusunod, ngunit may ilang mga isyu-siguraduhin na subukan. Ito ay kilala rin bilang "Almost Standards Mode." |