window.load是当页面所有资源全部加载完成后(包括DOM文档树,css文件,js文件,图片资源等),执行一个函数。
$(document).ready()是当DOM文档树加载完成后执行一个函数 (不包含图片,css等),在执行的时候会优先于window.onload执行,而原始js是没有document.ready方法的,使用的时候通常是在jquery的前提下使用。
通过实例可以证明document.ready 会优于 window.onload 执行
function loaded() {
console.log('window onload');
};
function readyed() {
console.log('document ready');
};
document.ready = function(callback) {
///兼容FF,Google
if (document.addEventListener) {
document.addEventListener('DOMContentLoaded', function() {
document.removeEventListener('DOMContentLoaded', arguments.callee, false);
callback();
}, false)
}
//兼容IE
else if (document.attachEvent) {
document.attachEvent('onreadystatechange', function() {
if (document.readyState == "complete") {
document.detachEvent("onreadystatechange", arguments.callee);
callback();
}
})
} else if (document.lastChild == document.body) {
callback();
}
};
//{1}
window.onload = function(callback) {
loaded();
};
//{2}
document.ready(readyed);
按照js的执行顺序,会先执行{1},然后执行{2},最后打出的日志为:
- document ready
- window onload
因此,document.ready 会优于 window.onload 执行。