Tarayıcıları Quirks Moduna Getirmek için Doctype'ı Dışarıda Bırakın
Birkaç aydan uzun bir süredir web sayfaları tasarlıyorsanız, büyük olasılıkla tüm tarayıcılarda aynı görünen bir sayfa yazmanın zorluğunun farkındasınızdır. Aslında, bu imkansız. Birçok tarayıcı sadece ele alabilecekleri özel özellikler ile yazılmıştır. Ya da diğer tarayıcıların bunlarla nasıl başa çıktıklarından farklı şeyleri ele almak için özel yöntemleri vardır. Örneğin:
- Katmanlar, Netscape tarayıcılarında kullanılmak üzere oluşturuldu. Başka bir tarayıcıda çalışmıyorlar ve aslında Netscape 6.x + 'da kullanımdan kaldırıldılar.
- Satır içi çerçeveler ilk olarak yalnızca Internet Explorer için oluşturuldu ve bu nedenle HTML belirtiminin bir parçası haline geldi.
- Internet Explorer 6.0, ek bir alan ekler (
) div'in içeriklerini bir (uzun) satırda yazmazsanız çevreleyen etiketleri. (IE 6, bunun gibi daha birçok tuhaflık var.) - Netscpe 4.7, doğru HTML'de yazılmayan tabloları görüntülemez - bunun yerine boş bir sayfa gösterir. Bu Netscape 6'da düzeltildi.
Tarayıcı geliştiricileri için sorun, eski tarayıcılar için oluşturulmuş web sayfalarıyla geriye dönük olarak uyumlu web tarayıcıları oluşturmaları gerektiğidir. Bu sorunla başa çıkmak için tarayıcı yapıcılar, tarayıcıların çalışması için modlar oluşturdu. Bu modlar, bir DOCTYPE öğesinin varlığına veya yokluğuna ve DOCTYPE'nin ne aradığına göre tanımlanır.
DOCTYPE Anahtarlama ve “Quirks Mode”
Web sayfanıza aşağıdaki DOCTYPE koyarsanız:
Modern tarayıcılar (Android 1+, Chrome 1+, IE 6+, iOS 1+, Firefox 1+, Netscape 6+, Opera 6+, Safari 1+) bunu şu şekilde yorumlar:
- Doğru yazılmış bir DOCTYPE olduğundan, standart modunu tetikler.
- Bu bir HTML 4.01 Geçiş belgesi
- Standartlar modunda olduğu için çoğu tarayıcı içeriği HTML 4.01 Transitional ile uyumlu (veya çoğunlukla uyumlu) hale getirir
Ve eğer bu DOCTYPE'i belgenize koyarsanız:
Bu, modern tarayıcılara HTML 4.01 sayfanızı DTD ile tam uyum içinde görüntülemek istediğinizi bildirir.
Bu tarayıcılar "katı" veya "standartlar" moduna girecek ve sayfayı standartlara uygun hale getirecektir. (Bu nedenle, bu belge için, HTML 4.01 Strict'de FONT öğesi kullanımdan kaldırıldığı için, tarayıcı tarafından tamamen yok sayılan etiketler olabilir.)
DOCTYPE'i tamamen terk ederseniz, tarayıcılar otomatik olarak “quirks” moduna geçer.
Aşağıdaki tablo, ortak tarayıcıların farklı ortak DOCTYPE bildirimleriyle sunulduğunda neler yaptığını gösterir.
Microsoft Daha Zorlaştırıyor
Internet Explorer 6 ayrıca, DOCTYPE bildiriminin üzerine herhangi bir şey koyarsanız, quirks moduna gireceklerdir. Yani, bu örneklerin her ikisi de, DOCTYPE bildirimlerinin katı standartlar modunda olduğunu söylemesine rağmen IE 6'yı quirks moduna geçirecektir:
ve XHTML 1.1 DOCTYPE:
Ayrıca, IE6'yı geçerseniz, Microsoft'un IE8 ve IE9: META eleman değiştirme ve web sitesi kara listeye eklediği “özellik” e sahipsiniz. Aslında, bu iki tarayıcı sürümü artık yedi (!) Farklı moda sahiptir:
- IE 5.5 quirks modu (IE 8 ve 9)
- IE 7 standart modu (IE 8 ve 9)
- IE 8 neredeyse standart mod (IE 8 ve 9)
- IE 8 standart modu (IE 8 ve 9)
- IE 9 neredeyse standart mod (IE 9)
- IE 9 standart modu (IE 9)
- XML modu (IE 9)
IE 8, kullanıcının render modelini IE 7 moduna geri döndürmeyi seçebileceği “Uyumluluk Modu” nu da tanıttı. Böylece, hem DOCTYPE hem de META öğelerini kullanarak ayarlamak istediğiniz modu ayarlamış olsanız bile, sayfanız yine de daha az standart uyumlu modda geri itilmiş olabilir.
Quirks Mode nedir?
Web tasarımcılarının bu şeylerle başa çıkmak için kullandıkları tüm garip oluşturma ve uyumlu olmayan tarayıcı desteği ve hack'lerle başa çıkmak için Quirks modu oluşturuldu. Tarayıcı üreticilerinin sahip olduğu endişeler, tarayıcılarını tam şartname uyumluluğuna geçirdiyse, web tasarımcıları geride kalacaktı.
DOCTYPE anahtarlamayı ve “Quirks Mode” ayarını yaparak, web tasarımcılarının tarayıcılarını HTML'lerini oluşturmalarını istediklerini seçmelerine izin verildi.
Quirks Mode Etkileri
Çoğu tarayıcının Quirks Mode'da kullandığı çeşitli efektler vardır:
- Bazı tarayıcılarda, kutu modeli, quirks modunda kutu modelinin IE 5.5 sürümüne dönüşür.
- Bazı tarayıcılar stilleri tablolara devretmez
- Quirks modu, sayfaları quirks modundan standart moda dönüştürüyorsanız, CSS ve CSS düzeninin ayrıştırılmasını önemli ölçüde etkiler, CSS düzeninizi test edip kapsamlı olarak ayrıştırdığınızdan emin olun.
- Quirks modundayken komut dosyalarındaki değişiklikleri izleyin. Firefox, id niteliğinin çalışmasını değiştirir, örneğin. IE8 ve IE9, quirks modunda komut dosyalarında çok dramatik değişikliklere sahiptir.
“Neredeyse Standartlar Modu” nda da bir fark var.
- İçerdeki sadece görüntülerin bulunduğu tablo hücrelerinin yüksekliği, standart modundan farklı olarak hesaplanır.
DOCTYPE nasıl seçilir
DOCTYPE Listesindeki makalemde daha fazla ayrıntıya giriyorum, ancak burada bazı genel kurallar var:
- Her zaman ilk önce standart modunu seçin. Ve şu an kullanmanız gereken standart HTML5: HTML5 DOCTYPE kullanmaktan kaçınmak için belirli bir nedeniniz olmadığı sürece, bunu kullanmanız gerekir.
- Eski öğeleri doğrulamanız gerekiyorsa veya bazı nedenlerden kaçınmak istiyorsanız katı HTML 4.01'e gidin:
- Bir tabloda dilimlenmiş resimler varsa ve bunları düzeltmek istemiyorsanız, Transitional HTML 4.01'e gidin:
- Quirks modunda kasten sayfa yazmayın. Daima bir DOCTYPE kullanın. Bu, sizi gelecekte geliştirme zamanından kurtaracak ve gerçekten hiçbir faydası olmayacaktır. IE6 hızla popülaritesini kaybediyor ve bu tarayıcı için tasarlayarak (ki bu da aslında quirks modunun tasarımını yapıyor) kendinizi, okurlarınızı ve sayfalarınızı sınırlıyorsunuz. IE 6 veya 7 için yazmanız gerekiyorsa, modern tarayıcıları quirks moduna zorlamak yerine, bunları desteklemek için koşullu yorumlar kullanın.
Neden DOCTYPE Kullanmalı?
Bu tür bir DOCTYPE anahtarının devam ettiğini fark ettikten sonra, tarayıcınızın sayfanızdan bekleyebileceklerini belirten bir DOCTYPE kullanarak web sayfalarınızı daha doğrudan etkileyebilirsiniz. Ayrıca, DOCTYPE kullanmaya başladığınızda, geçerli olmaya daha yakın HTML yazacaksınız (yine de doğrulamanız gerekir). Ve geçerli bir XHTML yazarak, tarayıcı üreticilerini standartlara uygun tarayıcılar oluşturmaya teşvik edersiniz.
Tarayıcı Sürümleri ve Quirks Modu
DOCTYPE | Android Krom Firefox IE 8+ iOS Opera 7.5+ Safari | IE 6 IE 7 Opera 7 | Netscape 6 |
---|---|---|---|
Yok | Alay modu | Alay modu | Alay modu |
HTML 3.2 | |||
Alay modu | Alay modu | Alay modu | |
HTML 4.01 | |||
Geçici | Standartlar Modu * | Standartlar Modu * | Standartlar modu |
Geçici | Alay modu | Alay modu | Alay modu |
sıkı | Standartlar modu | Standartlar Modu * | Standartlar modu |
sıkı | Standartlar modu | Standartlar Modu * | Standartlar modu |
HTML5 | |||
Standartlar modu | Standartlar Modu * | Alay modu | |
* Bu DOCTYPE ile, tarayıcılar standartlara uyumludur, ancak bazı sorunları vardır; test ettiğinizden emin olun. Bu aynı zamanda “Neredeyse Standartlar Modu” olarak da bilinir. |