Вызов функции Javascript - PullRequest
       8

Вызов функции Javascript

1 голос
/ 02 ноября 2010

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

Например,

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

Но что, если есть несколько функций для вызова окна onload?событие ...

Ответы [ 4 ]

11 голосов
/ 02 ноября 2010

Оберните их.

window.onload = function() { MyFunc(); MyOtherFunc(); }
4 голосов
/ 02 ноября 2010

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

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

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

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

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

1 голос
/ 02 ноября 2010

Вот пример, который объясняет, КАК:

// 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]();
  }
}

Приведенный выше пример попытался сделать простым, чтобы дать вам объяснение по вашему вопросу.Тем не менее, есть хорошее объяснение 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, функция добавляет событие таким образом, что все ранее добавленные функции onload будут выполняться первыми. Читать дальше .

0 голосов
/ 02 ноября 2010

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

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

...