Виклик кількох OnLoad для Windows функції в Javascript
Херес ще один маленький peice обману Javascript, що мені довелося копирсатися, тому що ситуація commaned він. В одному з моїх веб-сайтів, у мене була ситуація, коли я повинен був здійснювати "windows.onload" в два рази. Перше, що б прийшли до недосвідчений розум, як у мене (у мене чесно сказати, що, оскільки я використовую JavaScript рамки і бібліотеки, я forgotton робити прості речі, на мій власний ... Сумно, але факт), є наступний метод ...
window.onload = onloadfn1; window.onload = onloadfn2; window.onload = onloadfn3; і т.д. ..
Вибачте, що говорю, але це не буде працювати ... не хочу, щоб обговорити виконання науки Javascript багато ... але за моїми недавнім досвідом, тільки остання функція (onloadfn3) буде погано насправді будуть виконуватися.
У нормальній ситуації, на відміну від моєї (про які я розповім трохи пізніше) ... ви можете зробити одне з наступних дій, щоб виконати mutliple функції OnLoad ....
Або щось на зразок цього
Функція doOnLoad () { onloadfn1 (); onloadfn2 (); onloadfn3 (); } window.onload = doOnLoad;
Для моєї нинішньої ситуації, я не можу використовувати будь-який з зазначених вище ...
Чому мені потрібно зателефонувати windows.onload двічі, а що виклик двох функцій в рамках однієї функції OnLoad? Ось швидкий погляд на мої постановки задачі ...
"Мої сторінки сайту структуровані як тема WORDPRESS .... тобто загальна header.php і footer.php, який отримує включені у всі сторінки сайту. Існує implementaion OnLoad функції в footer.php, щоб зробити деякі загальні функції OnLoad. І є кілька сторінок, які повинні щось своє OnLoad, крім тих, зробити загальні функції OnLoad. Якщо я призначити функцію зворотного виклику безпосередньо на window.onload обробник, він буде по-їхати раніше призначеного зворотного виклику в footer.php "
.... Моя проблема розуміється
?
Ну! Є кілька рішень, які я знайшов. Всі вони дуже схожі, і головним чином implementions вирішення даної Саймон Willison ( http://simonwillison.net/2004/May/26/addLoadEvent/ ) ...
Рішення:
Просто додайте цей код JavaScript на сайті ...
Функція addLoadEvent (функції) { УАГ oldonload = window.onload; якщо (TypeOf window.onload! = 'функція') { window.onload = функція {} Інше window.onload = функція () { якщо (oldonload) { oldonload () } функції () } } }І називати його замість звичайного "windows.onload"
addLoadEvent (FunctionToRunOnPageLoad); addLoadEvent (функція () { / * Більше коду, щоб запустити на сторінці завантаження * });
Переваги цей фрагмент коду ...
1. У першу чергу, це дозволяє мати кілька подій windows.onload, викликається з окремих частин коду, без overridding попереднє визначення
2. Це дуже ненав'язливо. Це може бути поміщений в файл з іншими сценаріями, або в окремому файлі.
3. Це працює, навіть якщо window.onload вже встановлений.










































