JavaScript ve CSS kullanımı için Internet Explorer’ın eski sürümlerini tespit etmek

İnternet dünyasının başına gelmiş en kötü şey Internet Explorer’dır.

die die   Microsoft’cu abiler kusura bakmasın ama bu böyle. 6’sından 9’una kadar tüm sürümlerinde “En dandik tarayıcı nasıl yapılır?” “Bir tarayıcı nasıl daha yavaş yapılır?” “Siteleri nasıl hatalı görüntüleriz?” “Nasıl standartların içine s.çarız?” “Acaba bu sürümde hangi standardı desteklememeliyiz?” gibi sorulara cevap aradıklarını düşünüyorum.

Eğer bir web siteniz varsa, sitenizin IE7 ve IE8’de mükemmel olamasa da “insancıl” görünebilmesi önemlidir. Bu da genellikle bu tarayıcılara özgü stylesheet ve javascript kodları çalıştırmakla mümkün olur.

Bu tarayıcılara özgü stylesheet çalıştırmak için genellikle aşağıdaki yapı kullanılır:

<!--[if lte IE 6]>
  SADECE ÜST SATIRDA BELİRTİLEN IE SÜRÜMÜNDE ÇALIŞACAK KOD
<![endif]-->

Bu satırlar aslında HTML yorum satırları olduğu için diğer tarayıcılar bunları es geçer. Sadece belirtilen IE serisi tarayıcılar bu kodları çalıştırır. Burada lte “less than or equal” anlamına gelmektedir. lte yerine aşağıdakiler kullanılabilir:

lte: Less than or equal (Belirtilen sürüm ve daha düşük numaralı sürümlerde)
lt : Less than (Belirtilen sürümden daha düşük numaralı sürümlerde)
gt : Greater than (Belirtilen sürümden daha yüksek numaralı sürümlerde)
gte: Greater than or equal (Belirtilen sürüm ve daha yüksek numaralı sürümlerde)

6 yerine istenen IE sürümü yazılabilir.

Bu iki if tagı arasına istediğiniz JavaScript ve CSS’yi yazabilirsiniz. Hatta muhtemelen HTML için bile aynısı geçerlidir, ancak hiç denemedim.

Gelelim JavaScript için tarayıcı tespitine…

Web ile ilgili şeylerde ilk yaptığım işlerden bir tanesi IE8 ve daha eski IE sürümleri için bilumum jQuery efektlerini kapatmaktır. ( $.fx.off = true; ) Zira, bu tarayıcılar efektleri akıcı görüntüleyemeyecek kadar rezil durumdalar. Ama tabi bunu yapabilmek için önce kullanıcının hangi tarayıcıyı kullandığının tespiti gerekir.

Eskiden tarayıcı tespiti için JavaScript ile User Agent’ı parse ederdim. Son yazdığım kodda onun yerine şöyle bir teknik aklıma geldi:

Sayfanın en tepesine, head kısmına şunu ekledim:

<!--[if lt IE 9]>
  <script>var ieProblem = true;</script>
<![endif]-->

JavaScript’imin herhangi bir yerinde tarayıcının eski Internet Explorer sürümlerinden biri olup olmadığını şöyle kontrol ettim:

if (typeof(ieProblem) != "undefined") {
  $.fx.off = true;
};

Bu yöntemi kullanarak sırf Internet Explorer sürümü tespiti için fonksiyon yazmaktan/bulmaktan kurtuldum. Artık tek yapılan bir değişkenin tanımlanıp tanımlanmadığına bakılması.

Bitirirken

Eğer kontrolü aşağıdaki şekilde yaparsanız IE 7 ve IE 6’da kod hatası alırsınız. O yüzden typeof iyidir.

if (ieProblem != null) {
  $.fx.off = true;
};

😃