Sejħat multipli Windows Funzjonijiet Onload Fil Javascript
Heres ieħor peice ftit trickery Javascript li kelli biex ħaffer madwar għaliex is-sitwazzjoni commaned dan. Fil waħda ta 'siti web tiegħi, kelli din is-sitwazzjoni fejn I kellhom jimplimentaw "windows.onload" darbtejn. L-ewwel ħaġa li daħal b'moħħ esperjenza bħall-mini (jien onestament ngħid li, peress I bdew jużaw Oqfsa javascript u l-libreriji, I forgotton biex tagħmel affarijiet sempliċi fuq stess ... tiegħi imdejjaq imma veru), huwa l-metodu li ġej ...
window.onload = onloadfn1; window.onload = onloadfn2; window.onload = onloadfn3; eċċ ..
Sorry to say imma, dan wont xogħol ... dont jridu jiddiskutu l-xjenza eżekuzzjoni ta 'Javascript ħafna ... iżda skont esperjenza reċenti tiegħi, biss il-funzjoni aħħar (onloadfn3) se morda fil-fatt tikseb esegwiti.
F'sitwazzjonijiet normali, b'differenza mini (li jien ser nitkellmu dwar ftit aktar tard) ... inti tista 'tagħmel waħda minn dawn li jesegwixxu l-funzjonijiet onload mutliple ....
JEW xi ħaġa bħal din
doOnLoad funzjoni () { onloadfn1 (); onloadfn2 (); onloadfn3 (); } window.onload = doOnLoad;
Għal sitwazzjoni attwali tiegħi, jien ma tistax tuża jew ta 'hawn fuq ...
Għaliex ma I bżonn tirrikorri windows.onload darbtejn, pjuttost li ssejjaħ żewġ funzjonijiet fi ħdan funzjoni onload waħda? Hawnhekk huwa ħarsa lejn dikjarazzjoni problema tiegħi ...
"Paġni tas-sit tiegħi huma strutturati bħall-tema WordPress .... jiġifieri hemm ftit Header.php komuni u Footer.php li gets inklużi fil-paġni kollha sit. Hemm implementaion funzjoni onload fl-Footer.php tagħmel xi funzjonijiet onload komuni. U hemm ftit paġni li għandhom bżonn xi ħaġa ta ONLOAD tagħhom stess, barra minn dawk magħmula mill-funzjoni onload komuni. Jekk I tassenja funzjoni callback direttament lill-persuna li tieħu ħsieb window.onload, se over-ride callbacks qabel assenjati fil-Footer.php "
.... Huwa mifhum problema tiegħi
?
Ukoll! hemm soluzzjonijiet ftit li jien ssib. Dawn kollha huma simili ħafna u prinċipalment implementions ta 'soluzzjoni mogħtija minn Simon Willison ( http://simonwillison.net/2004/May/26/addLoadEvent/ ) ...
Soluzzjoni:
Simply żid dan il-kodiċi javascript biex is-sit ...
funzjoni addLoadEvent (funzjonijiet) { var = oldonload window.onload; jekk (typeof window.onload! = "funzjoni") { window.onload = funzjonijiet } Inkella { window.onload = funzjoni () { jekk (oldonload) { oldonload () } funzjonijiet () } } }U sejħa hija minflok il-soltu "windows.onload"
addLoadEvent (FunctionToRunOnPageLoad); addLoadEvent (funzjoni () { / * Kodiċi aktar li jimxu fuq * tagħbija paġna });
Vantaġġi ta 'dan snippet kodiċi ...
1. Prinċipalment, Hija ihallik jkollhom avvenimenti windows.onload multipli, imsejħa minn partijiet separati tal-kodiċi tiegħek, mingħajr overridding-definizzjoni ta 'qabel
2. Huwa verament jagħtux fil-għajn. Ikun jista 'jitqiegħed fil-fajl ma' skripts oħra tiegħek jew fil-fajl separat.
3. Hija taħdem ukoll jekk window.onload diġà ġie stabbilit.










































