Javascript yılında Birden çok Windows onload Fonksiyonlar Çağrı
Ben durumun bu commaned çünkü etrafında kazmak zorunda olduğunu Javascript hile başka bir küçük takıyorum Heres. Ben iki kez "windows.onload" direyebilmiştir nerede web sitelerinden biri olarak, bu durum vardı. Benim gibi deneyimsiz bir zihin (Dürüstçe javascript Çerçeveler ve kütüphaneleri kullanarak beri, benim kendi ... üzücü ama gerçek üzerinde basit şeyler yapmak unutulmamalıdır var, söylemek zorundayım) gelmiş olacak ilk şey, aşağıdaki yöntemi ...
window.onload = onloadfn1; window.onload = onloadfn2; window.onload = onloadfn3; vs ..
Üzgünüz söylemek ama, bu işe alışkanlık ... Javascript kadar yürütme bilimi tartışmak istemiyorum ... ama benim son tecrübesine göre, sadece son fonksiyonu (onloadfn3) hasta aslında idam alacak.
Normal durumlarda, maden (biraz sonra bahsedeceğim olan) farklı olarak ... Eğer mutliple onload fonksiyonları çalıştırmak için aşağıdakilerden birini yapabilirsiniz ....
Bu gibi VEYA şey
fonksiyonu doOnLoad () { onloadfn1 (); onloadfn2 (); onloadfn3 (); } window.onload = doOnLoad;
Benim mevcut durum için, yukarıdaki birini kullanamazsınız ...
Neden windows.onload iki kez aramak yerine, tek bir onload fonksiyonu içinde iki işlevi çağıran bu gerekir mi? İşte benim sorun deyimi kısaca bir göz olduğunu ...
"Sitem sayfaları WORDPRESS tema gibi yapılandırılmıştır .... yani tüm site sayfalarında yer alır ortak bir header.php ve footer.php vardır. Bazı ortak onload fonksiyonları yapmak Footer.php bir onload fonksiyonu implementaion yoktur. VE dışında ortak onload fonksiyonu tarafından yapılan olanlardan kendi OnLoad bir şey gereken birkaç sayfa vardır. Ben window.onload işleyicisi doğrudan geri arama işlevi atarsanız, "Footer.php önceden atanmış geriçağırımları fazla kaçacağım
.... Benim sorunum anlaşılmaktadır
?
Eh! Ben buldun o birkaç çözüm vardır. Hepsi çok benzer ve özellikle Simon Willison (tarafından verilen bir çözüm implementions http://simonwillison.net/2004/May/26/addLoadEvent/ ) ...
Çözüm:
Sadece site bu javascript kodu ekleyin ...
fonksiyonu addLoadEvent (func) { var oldonload = window.onload; if (typeof window.onload! = 'işlev') { window.onload = func } Else { window.onload = function () { {(oldonload) if oldonload () } func () } } }Ve bunun yerine her zamanki "windows.onload" nin diyoruz
addLoadEvent (FunctionToRunOnPageLoad); addLoadEvent (function () { Sayfa yük * çalıştırmak için / * daha fazla kod });
Bu kod parçası avantajları ...
1. Öncelikle, bir önceki tanımı overridding olmadan, kodunuzun ayrı bölümden çağrılır, birden fazla windows.onload etkinlik sağlar
2. Gerçekten mütevazi olduğunu. Bu sizin diğer scriptler ile bir dosya veya ayrı bir dosyaya yerleştirilebilir.
3. Bu window.onload zaten ayarlanmış olsa bile çalışır.










































