Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Событие windows.onload (https://javascript.ru/forum/misc/15298-sobytie-windows-onload.html)

revvo 21.02.2011 00:32

Событие windows.onload
 
Здравствуйте.

Такой у меня к вам вопрос. Мне нужно чтобы функция вызывалась при загрузке страницы. Но, событие window.onload уже определено в файле script.js. В этом файле находятся скрипты общие для всех страниц сайта.
Вот так выглядит это событие (находится в последней строке файла): window.onload = Custom.init;

Если я переписываю так:
window.onload = function() { Custom.init(); fillGrades(); }
то все работает, но на других страницах, где нет функции fillGrades (она есть только в одной странице), это вызывает ошибку (если посмотреть в Консоль ошибок), хотя все работает нормально, и для юзера никак не заметно. Но я думаю что это не есть гуд, и потенциально опасно. Как еще можно повешать эту функцию на загрузку?

Все написано на чистом Яваскрипте, подключать jQuery только ради события ready не хотелось бы.

В этой функции fillGrades() все специфично для данной страницы и помещать ее в общий файл будет проблематично, это вызовет кучу ошибок. Если только как-то определять что загружен именно нужный файл и тогда эту функцию вызывать, это возможно?

Aetae 21.02.2011 02:13

Читать: http://javascript.ru/tutorial/events/comparison
Юзать: http://javascript.ru/tutorial/events/crossbrowser

LaunchMyRocketsAway 06.08.2013 18:18

var _init = []; // массив вызываемых функций

window.onload = function()
{
    for ( var i in _init )
    {
        if ( typeof( _init[i] ) == 'function' ) _init[i](); // вызываем подряд все функции из _init
    }
}

_init.push( Custom.init ); // загоняем в _init нужные функции
_init.push( fillGrades );  // при событии onload они все выполнятся

ruslan_mart 07.08.2013 08:14

window.onload = function() {
   Custom.init();
   if(window.fillGrades) fillGrades();
}


Часовой пояс GMT +3, время: 17:14.