window.onload 和 $(document).ready()

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 执行。

你可能感兴趣的:(window.onload 和 $(document).ready())