是否有不使用框架的window.onload的通用替代品?

时间:2011-06-08 21:25:55

标签: javascript jquery onload

a previous question中,我了解到我的JavaScript中有关在DOMIady事件被触发之前在BODY元素上使用appendChild的错误。

我能够通过将我的代码包装在window.onload事件中来解决这个问题。读到这一点,我了解到window.onload只支持一个监听器,我无法保证我不会破坏其他人的监听器,或者其他人的监听器不会破坏我的监听器。

查看$(document).ready(function(){});的来源,我意识到这种语法的简单性可能有很多。

在没有使用jQuery或其他JS库的情况下,我有没有通用的方法等待DOMReady事件?虽然这似乎可以解决问题,但我宁愿不依赖第三方库来使我的代码正常工作。

2 个答案:

答案 0 :(得分:5)

您可以执行以下操作:

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

使用附加功能将现有onload包装在新函数中。这取自http://www.webreference.com/programming/javascript/onloads/

然而,对于在文档准备就绪而不是onload (不同的事情,onload就是当所有内容都已下载时,文档被加载时已经准备好了)看看这个问题$(document).ready equivalent without jQuery

答案 1 :(得分:1)

您可以使用:

document.onpageshow= new function() {
//(Code here)
}

您还可以将“onpageshow”替换为“onload”以获得更好的兼容性。

这也可能有用: https://developer.mozilla.org/en/DOM/element.addEventListener