0

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

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/

4

2 回答 2

2

我将事件从更改document.onloadwindow.onload:请参阅此处的讨论。

document.onloadwindow.onload一个复杂的主题。document.onload您的浏览器可能根本没有触发该事件。(或者,当一个处理窗口而另一个处理 DOM 树时,document.onload当您的 javascript 函数执行操作时,该事件可能已经触发 - 更多测试可以证实这一点。)

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

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/

于 2013-05-13T15:10:48.663 回答
2
pctaddLoadEvent(loadpapi());

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

你想传递函数而不调用它。

于 2013-05-13T14:57:05.277 回答