如何在JavaScript中检测document.ready?

可能重复:
$(document).ready没有jQuery

我有一个在加载时执行的无框架JavaScript:

function myJs() {    
   // some code
}
window.load = myJs;

但是这会导致脚本执行的延迟。 我希望在文档准备好可以在页面完全加载完成之前立即执行这个脚本。 这怎么能以跨浏览器兼容的方式来完成? 换句话说,如何能:

$(document).ready(function() {  
   //
});

的jQuery在纯JS中说?


我已经做了一个实现(基于jQuery中的实现),您可以使用它:http://github.com/jakobmattsson/onDomReady/blob/master/ondomready.js


//old IE
document.onreadystatechange = function() {
   if (this.readyState === "complete"){
      //whatev
   }
};


//for everyone else
document.addEventListener("DOMContentLoaded", function () {
  //whatev
  }, false);

其实并没有那么糟糕。 您需要一种将事件添加到document ,以及这些事件应该是什么的知识。 使用标准的addEvent函数

function addEvent( obj, type, fn )
{
 if (obj.addEventListener)
 {
   obj.addEventListener( type, fn, false );
 }
 else if (obj.attachEvent)
 {
  obj["e"+type+fn] = fn;
  obj[type+fn] = function() { return obj["e"+type+fn]( window.event ); };
  obj.attachEvent( "on"+type, obj[type+fn] );
 }
}

您可以执行以下操作:

// IE
addEvent(document, 'DOMContentLoaded', function() {
    alert('ready');
});

// Other
addEvent(document, 'onreadystatechange', function() {
    if (document.readyState == 'complete')
        alert('ready');
});

// For demonstration purposes, show a 'load' event
addEvent(window, 'load', function() {
    alert('load');
});

IE事件处理程序不会在其他浏览器中触发,反之亦然。

链接地址: http://www.djcxy.com/p/71245.html

上一篇: How to detect document.ready in JavaScript?

下一篇: Is there a way to check document.ready() if jQuery is not available?