שיחות מרובות Windows פונקציות onload ב-Javascript
Heres אחר peice קצת הולכת שולל Javascript שאני צריך לחפור מסביב כי המצב commaned זה. באחד מאתרי האינטרנט שלי, היה לי מצב שבו הייתי צריך ליישם "windows.onload" פעמיים. הדבר הראשון היה בא בחשבון חסר ניסיון כמו שלי (אני חייב לומר בכנות, כי אני כבר משתמש במסגרות-JavaScript של ספריות, אני forgotton לעשות דברים פשוטים ב ... שלי עצוב אבל נכון), היא השיטה הבאה ...
window.onload = onloadfn1; window.onload = onloadfn2; window.onload = onloadfn3; וכו '..
מצטער לומר אבל, זה לא יעבוד ... לא רוצה לדבר על המדע ביצוע Javascript הרבה ... אבל לפי הניסיון האחרון שלי, רק את הפונקציה האחרונה (onloadfn3) יהיה חולה ממש מקבל להורג.
במצבים נורמליים, שלא כמו שלי (שבה אני אדבר על מעט מאוחר יותר) ... אתה יכול לעשות אחד מאלה כדי לבצע תפקודים onload mutliple ....
או משהו כזה
doOnLoad function () { onloadfn1 (); onloadfn2 (); onloadfn3 (); } window.onload = doOnLoad;
על המצב הנוכחי שלי, אני לא יכול להשתמש בכל האמור לעיל ...
למה אני צריך לקרוא windows.onload פעמיים, ולא כי קוראים שתי פונקציות בתוך הפונקציה onload אחד? הנה מבט מהיר על הצהרה הבעיה שלי ...
"דפי האתר שלי בנויות כמו נושא וורדפרס .... כלומר יש כמה Header.php משותפים Footer.php שמקבל הכלולים אל כל דפי האתר. יש פונקציה ב onload implementaion Footer.php כדי לעשות כמה פונקציות onload משותפים. ויש עוד כמה עמודים, כי צריך משהו onload שלהם, מלבד אלה נעשה על ידי הפונקציה onload משותף. אם אני להקצות פונקציה התקשרות ישירות למטפל window.onload, זה יהיה יותר מדי לרכב callbacks שהוקצו בעבר Footer.php את "
.... הבעיה שלי הבין
?
טוב! יש כמה פתרונות שאני מצאו. כולם דומים מאוד ובעיקר implementions של הפתרון שניתן על ידי סיימון Willison ( http://simonwillison.net/2004/May/26/addLoadEvent/ ) ...
פתרון:
כל שעליך לעשות הוא להוסיף את קוד ה-JavaScript לאתר ...
פונקציה addLoadEvent (func) { var oldonload = window.onload; אם (window.onload typeof! = 'פונקציה') { window.onload = func אחר} { window.onload = function () { אם (oldonload) { oldonload () } func () } } }ולקרוא את זה במקום "windows.onload" כרגיל
addLoadEvent (FunctionToRunOnPageLoad); addLoadEvent (function () { / * קוד יותר לרוץ על * הטעינה של הדף });
היתרונות של קטע הקוד הזה ...
1. בעיקר, הוא מאפשר לך אירועים windows.onload מרובות, המכונה מחלקים נפרדים של הקוד שלך, ללא overridding ההגדרה הקודמת
2. זה באמת לא מתבלט. זה יכול להיות ממוקם בתוך קובץ עם התסריטים האחרים שלך, או בקובץ נפרד.
3. זה עובד גם אם window.onload כבר נקבע.










































