2010-11-02 7 views
1

Как вызвать несколько функций javascript в событии onload окна?вызов функции Javascript

Для Ex,

   window.onload=MyFunc(); //Single Function 

Но что, если есть больше чем один функции позвонить на событии загрузки окна ...

+1

Это так или иначе, если 'MyFunc' не возвращает объект функции. Помещение скобок после 'MyFunc' означает, что вы вызываете его немедленно, а значение, возвращаемое' MyFunc', будет присвоено 'window.onload'. Я полагаю, вы имели в виду 'window.onload = MyFunc'. –

ответ

11

завернуть.

window.onload = function() { MyFunc(); MyOtherFunc(); } 
+0

Согласитесь с этим; – 2010-11-02 07:03:29

4

Или вы могли бы связать функции в случае нагрузки окна:

window.addEventListener("load", MyFunction, false); 
window.addEventListener("load", MyOtherFunction, false); 

Для IE наследия вам может понадобиться использовать метод attachEvent:

window.attachEvent("load", MyFunction); 
window.attachEvent("load", MyOtherFunction); 

Проблема с этим подходом является что порядок выполнения функций не может считаться.

+0

Конечно, для IE <9 потребуется, конечно, резервный 'attachEvent'. – bobince

0

Почему бы не иметь старый школьный способ иметь столько вызовов функций внутри одной функции, вызванной при загрузке страницы? window.addEventListener ("load", Foo, false);

, где Foo вызывает все необходимые функции. Таким образом, вы можете контролировать порядок и возвращать значения, если это необходимо.

1

Вот образец кусок, который бы объяснить, как:

// create an array that will contain all 
// your functions that you would like to 
// call on page load 
var pageOnLoadEvents = []; 

// Add one or more functions in pageOnLoadEvents array 
pageOnLoadEvents.push(function() { alert("Hello!"); }) 
pageOnLoadEvents.push(function() { alert("How are you?"); }) 


// This will call when your page will load 
window.onload = function() { 
    // Loop through each index of pageOnLoadEvents 
    for(var index = 0; index < pageOnLoadEvents.length; index++) { 
    // '()' brackets in the end tell them to make a call 
    // If you don't include '()' at the end this will 
    // suspect as a object as in JavaScript functions 
    // are first-class objects. 
    // document.write(pageOnLoadEvents[index].toString()); // treat as object 
    pageOnLoadEvents[index](); 
    } 
} 

выше образец пытался быть простым, чтобы дать вам объяснение на ваш вопрос. Тем не менее, есть хорошее объяснение Simon Willison’s Weblog, он писал:

функция
function addLoadEvent(func) { 
    var oldonload = window.onload; 
    if (typeof window.onload != 'function') { 
    window.onload = func; 
    } else { 
    window.onload = function() { 
     if (oldonload) { 
     oldonload(); 
     } 
     func(); 
    } 
    } 
} 

addLoadEvent(nameOfSomeFunctionToRunOnPageLoad); 
addLoadEvent(function() { 
    /* more code to run on page load */ 
}); 

addLoadEvent принимает в качестве аргумента другую функцию, которая должна быть выполнена после загрузки страницы. В отличие от назначения непосредственно window.onload, функция добавляет событие таким образом, что любые ранее добавленные функции нагрузки будут выполнены в первую очередь. . Read more.

Смежные вопросы