14 Ocak 2011 Cuma

Window.Onload Çakışma Sorununu Çözmek / Çoklu Kullanım

  Öncelikle window.onload nedir Onu Açıklayayım. window.onload bi Java Script Functionudur. Bazı İşlevlerin Sayfa Yenilenmesine Gerek Kalmadan Oluşturulmasını Sağlar.

Peki Bloğumda Buna Yer Vermemin Sebebi Nedir? Bu Kodun bulunduğu bi scripti Yeni Kodladığım bir sitede kullanıyorum. Sayfadaki Resimlerin Fazla Olmasından Dolayı "Sayfa Yükleniyor" Scriptini Sayfama Yerleştirdim. Bütün Sayfalarda Normal Olarak Çalışan Script Bir Sayfamda Açılır bir Div Kullanmamla beraber Düzgün Çalışmamaya Başladı. Sonuçta Kullandığım 2 adet window.onload kodunun sorun çıkardığı ortaya çıktı. =)
Peki Bu Sorunu Nasıl Çözebilirsiniz? Ben Bunu bir Fonksiyon Yardımıyla Çözdüm. Aşağıda Verdiğim Kodları Doğru Olarak Sayfanıza Eklerseniz Sorun Düzelecektir.
    function addOnLoad(func) {
        if (window.onload) {
            var temp = window.onload;
                   window.onload = function () {
                    temp();
                    func();
        }
        } else {
            window.onload = func;
        }
    }
Fonksiyon eventı kontrol ediyor… Eğer daha önce belirlenmiş bir işlem varsa onu değişkene kaydediyor. Daha sonra işlemide çağıracak bir fonksiyon olarak çıkartıyor.

Kullanımıda Şu Şekilde Yaparsanız Düzgün Olarak Çalışacaktır.
Örneğin window.onload fonksiyonunu kullandığınız script şu olsun:

    function initShowHideContent()
    {
        var divs = document.getElementsByTagName('DIV');
        for(var no=0;no
            if(divs[no].className=='question'){
                divs[no].onclick = showHideAnswer;
            }   
           
        }   
    }

 window.onload = initShowHideContent;
Bu Kodun Kullanımını Şu Şekilde Yapacaksınız:
    function initShowHideContent()
    {
        var divs = document.getElementsByTagName('DIV');
        for(var no=0;no
            if(divs[no].className=='question'){
                divs[no].onclick = showHideAnswer;
            }   
           
        }   
    }

addOnLoad(initShowHideContent);

window.onload = initShowHideContent; Kodu Okunduğu Anda İşlevi Gerçekleştiriyor ve Çakışma Oluşuyor.
addOnLoad(initShowHideContent); kodu ise initShowHideContent olarak tanımlanmış fonksiyonu; addOnload funksiyonuna gönderiyor ve bir değişkene atıyor. Daha Önceden addOnload'a Bir Değer Gönderildiyse Önce O Çalışıyor ve Ardından Sonraki Gönderdiğiniz Değer.


Kafa Karıştırmadan Kısaca Açıklayıp Konuyu Bitireyim.
addOnload Fonksiyonu; gönderilen window.onload kodlarını sıraya koyup daha sonra sırasıyla çalıştırıyor. Bu Şekilde Çakışma Söz Konusu Olmuyor.

Okuyan Herkese Teşekkür Eder İyi Çalışmalar Dilerim.

Hiç yorum yok:

Yorum Gönder