Firefox ve javascript window.attachEvent

Elimde bir iş var ve uzun bir süredir onunla uğraşıyorum. Ve bir süre daha ilgilenmeye devam edeceğim 🙂 Javascript kullanarak form öğelerinden olan seçme kutularının içeriğini, web sayfası tarayıcı tarafından yüklendiği anda belli koşullara göre tekrar sıralatmak ve içerisindeki seçenekleri yenilemek istiyordum. Çok tuhaf bir şekilde herşey internet explorer ile yolunda gitti. Fakat sonradan farkettimki firefox bu fonksiyona yanıt vermiyordu. İş başa düştü ve çözümünü aradım buldum.. İşte çözümü 😉

Öncelikle bahsettiğim bu olaya normal bir örnek vereyim.
[JS]AramaFormGuncelle = function() {
RenkAl(true);
}
if (window.attachEvent) window.attachEvent(“onload”, AramaFormGuncelle);
[/JS]

Burada AramaFormGuncelle adındaki fonksiyonun window.attachEvent(“onload”, AramaFormGuncelle) kodu ile sayfa yüklenmesi bittiği anda çağrılmasını istedin. O da kendi içerisinde RenkAl() fonksiyonunu çağırıyor. Internet explorer için bu kod problem yaratmıyor fakat biz kodlama ile uğraşanları için internet explorer, firefox, opera ayrımı olmamalı. En azından şuan için en çok tercih edilen bu üç tarayıcı ile uyumlu sayfalar kodlamalıyız.

Yukarıdaki satırlarımızı alttaki ile değiştirdiğimizde artık sayfa yüklendiğinde fonksiyonlarımızı, internet explorer, firefox ve opera ile sorunsuz çağırabiliriz 😉

[JS]AramaFormGuncelle = function() {
RenkAl(true);
}
if(window.attachEvent){
window.attachEvent(“onload”, AramaFormGuncelle);
} else if(document.addEventListener || window.addEventListener){
if(document.addEventListener){
document.addEventListener(“load”, AramaFormGuncelle, false);
};
if(window.addEventListener){
window.addEventListener(“load”, AramaFormGuncelle, false);
};
} else {
if(typeof window.onload == “function”){
var fOld = window.onload;
window.onload = function(){ fOld(); AramaFormGuncelle(); };
} else {
window.onload = AramaFormGuncelle;
};
};[/JS]