Makale Özeti

Internet Explorer 8.0 ile beraber gelen yeni görsel render motorunun uyumluluk modlarını incelediğimiz bu makalede hali hazırdaki web sitelerinin IE 8.0 uyumluluğu konusunda yapılabilecek ayarlamalardan bahsediyoruz.

Makale

Internet Explorer ile diğer web tarayıcıları arasında kod uyumsuzluk sorunları web programcıları olarak hepimiz biliyoruz. Hazırladığımız siteleri tek tek farklı tarayıcılarda test etmek zorunda olmak ve tarayıcıya özgü farklı kodlar yazmak belki de işimiz en sıkıcı noktalarından biriydi. İşte bu soruna artık bir nokta koymak adına Internet Explorer 8.0 ile beraber artık IE tüm standartlara uygun hareket ediyor. Tabi bu gelişme içerisinde bulunduğum durumunda bizim için "yeni sorunlar" anlamına geliyor. Eskiden IE 7 ve öncesi tarayıcılara özel olarak hazırladığımız kodlar artık IE 8.0 içerisinde aynı şekilde çalıştırılmayacak ve bir anda tüm sitelerin görsellikleri bozulacak.

Compatibility View

Internet Explorer 8.0 Beta 2 ile beraber aslında Beta 1'de de "Emulate IE7" düğmesi aracılığı ile ulaştığımız eski tarayıcı motoru hala geliyor. Bunun nedeni eski sitelerin eski tarayıcı motoru ile gösterilmesinin şart olması. Bir anda tüm sitelerin yeni motora uygun şekilde hazırlanması mümkün değil. Beta 2 ile beraber gelen yenilik bu sistemin "Compatibility View" adı altında farklı bir işlevsellik ile karşımıza çıkması. Artık IE8.0 eski sistem için hazırlanmış siteleri algılayıp kullanıcıyı uyarabiliyor ve farklı tarayıcı motorları arasında geçiş tarayıcının kapatılıp tekrar açılmasını gerektirmiyor.

"Compatibility View" düğmesi.
"Compatibility View" düğmesi.

"Compatibility View" düğmesine basarak eski standartlara göre açtığınız bir web sitesiyle ilgili ayarı IE 8 saklayarak bir dahaki sefere aynı siteyi ziyaret ettiğinizde otomatik olarak "Compatibiltiy View" seçeneği aktif hale getiriyor. Şu an için Beta 2 içerisinde internet üzerinden açılan tüm siteler normal modda çalışırken intranet üzerinden açılan tüm siteler ise otomatik olarak "Compatilibity View" modunda açılıyor. Burada önemli olan bir diğer nokta da User Agent bilgisi. Özellikle istatistik sistemleri için ASP.NET tarafından tarayıcının sürüm bilgisinin alındığı durumlarda unutmamak gerek ki IE 8.0 "Compatibility View" içerisindeyse sunucuya User Agent olarak IE 7 bilgisi gönderecektir.

Hangi sitelerin nasıl gösterileceğine ayrıca Tools menüsünden "Compatibility View Settings" kısmından ulaşabilirsiniz. Buradan ister tüm sitelerin IE 7 gibi gösterilmesini veya sadece adresini ilettiğiniz sitelerin IE 7 olarak açılmasını sağlayabilirsiniz.

Hangi sitelerinde "Compatibility View" modunda açılacağını belirleyebiliyorsunuz.
Hangi sitelerinde "Compatibility View" modunda açılacağını belirleyebiliyorsunuz.

Sitemizi nasıl ayarlarız?

Tavsiye edilen tabi ki tüm sitenizi gözden geçirerek IE 8'e uygun şekilde gerekli düzenlemeleri yapmanız. Fakat bu süreçte hızlı bir adaptasyon sağlamak için isterseniz sitenizin IE 8 içerisinde otomatik IE 7 motoru ile, yani "Compatibility View" içerisinde açılmasını da sağlayabilirsiniz. Bunun için iki seçeneğiniz var;

Eğer tüm site bazında bu işlemi yapmak istiyorsanız HTTP Header olarak aşağıdaki kodu kullanabilirsiniz;

X-UA-Compatible: IE=EmulateIE7

Sitenizdeki sadece bir sayfanın bu modda çalıştırılmasını istiyorsanız, bu sefer de Meta Tag'larından faydalanabilirsiniz;

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />

IIS 7.0 üzerinde bir site için genel HTTP Header tanımlamak için aşağıdaki kodu Web.Config dosyasına koymanız yeterli olacaktır.

</system.webServer>

    <httpProtocol>

        <customHeaders>

            <add name="X-UA-Compatible" value="IE=EmulateIE7" />

        </customHeaders>

    </httpProtocol>

</system.webServer>

Peki sitenizi ilk başta IE7 moduna göre çalışacak şekilde ayarladınız ve "Compatibility View" içerisinde gösterildi. Tüm istemcilerde artık siteniz bu modda gösterilecek şekilde kaydedildiği için IE8.0 ile ilgili uyumluluk sorunlarınızı halletseniz ve HTTP header bilgisi ile meta tagları kaldırsanız da herkes hala IE 7.0 modunda sitenizi ziyaret etmeye devam edecektir. Bunu aşmanın yolu ise tüm istemcileri IE 8.0 modunda çalışmaya zorlamaktan geçiyor.

X-UA-Compatible: IE=EmulateIE8

Yukarıdaki gördüğünüz şekilde ister HTTP Header ayarlayın ister meta taglar kullanır hiç fark etmez. Artık siteniz kesinlikle IE8.0 modunda gösterilecek ve istemcilerde kullanıcılar isteseler de "Compatibility View" modunu aktif hale getiremeyecekler. Eğer siteniz daha öncesinde istemcide "Compatibility View" ile gösterilecek siteler listesinde yer alıyorduysa IE 8.0 tarafından otomatik olarak o listeden de silinecektir.

Hepinize kolay gelsin.

Daron Yöndem
MVP, MCT, MCPD, MCITP, MCTS
MCSD, MCAD, MCDBA, MCP, ACP, ICSD
Blog: http://daron.yondem.com
Sorularınız için: http://daron.yondem.com/tr/sorusor