window.onload在加载web之前执行

时间:2013-05-13 14:55:16

标签: javascript

我正在使用此代码在页面加载后立即触发函数:

function loadpapi(){
    alert("Hello World!");
}

function pctaddLoadEvent(func) {
  var oldonload = document.onload;
  if (typeof document.onload != 'function') {
    document.onload = func;
  } else {
    document.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}

pctaddLoadEvent(loadpapi());

但是在页面加载之前启动,您可以在此处尝试:http://jsfiddle.net/KuTxh/

2 个答案:

答案 0 :(得分:2)

pctaddLoadEvent(loadpapi());

此代码调用 loadpapi(就像任何其他函数调用一样)并将结果传递给pctaddLoadEvent

您希望在不调用它的情况下传递函数。

答案 1 :(得分:2)

我将活动从document.onload更改为window.onload:请参阅讨论here

document.onload vs window.onload是一个复杂的主题。您的浏览器根本不会触发document.onload事件。 (或者,当一个人处理窗口而另一个处理DOM树时,当你的javascript函数采取行动时,document.onload事件可能已被触发 - 更多测试可以确认这一点。)

此外,作为参数传递的函数没有(),因为您想要传递函数本身,而不是它的返回值。

function loadpapi(){
    alert("Hello World!");
}


function pctaddLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}

pctaddLoadEvent(loadpapi);

检查演示小提琴:http://jsfiddle.net/st4kQ/