共享onload事件

有一个函数 functionA ,我们想让它再网页加载完毕之后立刻执行,可以用

window.onload = functionA;

这样是可以的,但是如果想让网页加载完毕之后执行两个函数.

window.onload = functionA;
window.onload = functionB;

但是很遗憾这样做并不行,结果浏览器只会执行 funcitonB

解决方法

可以先创建一个匿名函数来容纳这两个函数,然后把这个匿名函数绑定的onload事件上

window.onload = function() {
  functionA();
  functionB();
}

事实上确实解决了问题。但是如果想加载多个函数呢?一个一个绑定是很麻烦的。

最佳解决方案

创建一个 addLoadEvent 函数。这个函数的功能

  1. 把现有的 window.onload 事件处理函数的值存入变量 oldonload
  2. 如果在这个处理函数上还没有绑定任何函数,就像平时那样把新函数添加给它。
  3. 如果在这个处理函数上已经绑定了一些函数,就把新函数追加到现有指令的末尾。
function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != "function") {
    oldonload = func;
  } else {
    window.onload = function() {
      oldonload();
      func();  
    }
  }
}

你可能感兴趣的:(共享onload事件)