JavaScript düzenli olarak geliştirilen ve yeni özellikler katılan bir dil. Bu geliştirmeler yapılırken dile yeni özellikler ve fonksiyonlar da eklenmekte.
Bu nedenle özellikle eski tarayıcılar yeni sürüm JavaScript ile yazılmış kodları çalıştırırken, bilmedikleri metod, nesne veya fonksiyonlar ile karşılaşabiliyorlar. Bu durum hata oluşmasına ve sayfa içerisindeki kodun doğru çalıştırılmaması sonucunu doğurmaktadır.
Polifill
Polifill eski tarayıcılarda çalışmayan kod parçalarını, o tarayıcı üzerinde çalıştırmak için kullanılan kod parçasıdır.
Mesela Math.trunc girilen kesirli bir sayının, noktadan sonraki bölümünü silerek sadece tam sayı bölümünü geri dönderir.
const tamsayi = Math.trunc(13.4);
console.log(tamsayi);
// Konsola
// 13
// değerini yazdırır.
Bu kod Chorome 38. sürümü veya Firefox 25. sürümünden sonra çalışır. Internet Explorer ile ise çalışmayacaktır. Diğer tarayıcı uyumlarını görmek için buraya bakabilirsiniz.
Eğer yazdığımız uygulama için önemli bir bölüm ise, eski bir tarayıcı ile sayfamız açıldığında sorun yaşayacağız demektir.
Fonksiyon Tarayıcı Tarafından Destekleniyor Mu?
Bir hata olamaması için yapacağımız işlemlerden bir tanesi fonksiyon tarayıcı tarafından destekleniyor mu denetlemek.
if (!Math.trunc) { // fonksiyon yoksa
// kodu ekle
Math.trunc = function(number) {
return number < 0 ? Math.ceil(number) : Math.floor(number);
};
}
JavaScripte bir nesneye istendiğine yeni bir fonksiyon veya özellik eklenebilir. Bu asıl koda dahil olsa bile.
Böylece yukarıdaki kodda tarayıcıya Math.trunc desteği sağlamış olduk ve kod eski bir tarayıcıda çalışırsa, if (!Math.trunc) bölümü true değeri oluşturacak ve Math nesnesine trunc metodu eklenecektir. Sonrasında kodun herhangi bir yerinde Math.trunc kullanılabilir olacaktır. Yeni tarayıcılarda zaten sorun olmadığından tüm tarayıcılar için çalışan bir kodumuz olacaktır.
Diğer Yöntemler
Eski tarayıcılar ile uygum sorununu çözmek için farklı yöntemler kullanılabilir.
- Webpack ile birlikte Babel Js kullanmak.
- core-js ile çalışmak.
- Polyfill.io servisini kullanmak.
Bunlar dışında farklı çözümler de bulabilirsiniz, yada kendi çözümlerinizi üretebilirsiniz.
Sonuç
Eski nesil tarayıcılar ile çalışmak önemli bir sorundur. Çünkü JavaScriptin yeni özelliklerini kullanamazlar. Bu sorunu çözmek için kullandığımız kod bölümlerine polifill diyoruz.
Sizin de eski nesil tarayıcılar ile yaşadığınız sorunlar oldu mu? Olduysa bizimle paylaşabilir misiniz?
