Две функции Javascript: один window.onload = Custom.init; и один window.onload = function () { - PullRequest
2 голосов
/ 26 марта 2012

Я использую две функции, одна из них с этого сайта http://ryanfait.com/resources/custom-checkboxes-and-radio-buttons/, а вызов функции используется следующим образом:

window.onload = Custom.init;

и после этого я использую другой вызов функции, подобный этому

window.onload = function() {...

Второй убивает первого! Как я могу изменить или сделать другой звонок на втором, чтобы они могли работать вместе?

Ответы [ 6 ]

4 голосов
/ 26 марта 2012

Используйте addEventListener / attachEvent.Вы можете использовать библиотеку, которая абстрагирует это, например, jQuery:

$(window).load(function () {
  // run code
});

Это может быть запущено несколько раз с различными функциями без проблем.

2 голосов
/ 26 марта 2012
window.onload = function() {
    Custom.init();
    // ...
};
0 голосов
/ 26 марта 2012

Как насчет симпатичной маленькой обертки для всех обработчиков событий onLoad?

window.onLoadHandlers = [];
window.onLoad = function() {
    while (window.onLoadHandlers.length) {
        window.onLoadHandlers.shift()();
    }
};

Затем просто поместите две функции в этот массив:

window.onLoadHandlers.push( Custom.init );
window.onLoadHandlers.push( function() { ...

Вы можете рассмотреть возможность использования jQuery илилюбая другая библиотека, которая предоставляет лучшее решение для этого.

0 голосов
/ 26 марта 2012

Вручную позвоните Custom.init?

window.onload = function() {
   Custom.init();
   //your stuff
};
0 голосов
/ 26 марта 2012

Я предпочитаю это:

loadFunctions = [];
window.onload = function() {var x; while(x = loadFunctions.shift()) x();};

Затем вместо установки window.onload я делаю:

loadFunctions.push(function() {...});

Конечно, я могу сделать это, потому что яне использовать внешние библиотеки, которые могут мешать window.onload.

РЕДАКТИРОВАТЬ: Если у вас нет контроля над одной из них, вы можете сделать это:

var ool = window.onload;
window.onload = function() {
    if( ool) ool();
    // new code here
};
0 голосов
/ 26 марта 2012

Вам нужно будет создать собственную функцию, которая будет вызывать их обоих.

window.onload = function(){
    Custom.init();
    function() { ... }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...