document.ready和window.onload的區(qū)別

在Jquery里面,我們可以看到兩種寫法:$(function(){}) 和$(document).ready(function(){})

這兩個(gè)方法的效果都是一樣的,都是在dom文檔樹(shù)加載完之后執(zhí)行一個(gè)函數(shù)(注意,這里面的文檔樹(shù)加載完不代表全部文件加載完)。

而window.onload是在dom文檔樹(shù)加載完和所有文件加載完之后執(zhí)行一個(gè)函數(shù)。也就是說(shuō)$(document).ready要比window.onload先執(zhí)行。

那么Jquery里面$(document).ready函數(shù)的內(nèi)部是怎么實(shí)現(xiàn)的呢?下面我們就來(lái)看看:

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();
            }
        }

document.ready這個(gè)函數(shù)是實(shí)現(xiàn)了。我們?cè)賮?lái)驗(yàn)證一下最上面所說(shuō)的“ready要比onload先執(zhí)行”:

window.onload = function () {
            alert('onload');

        };

        document.ready(function () {
            alert('ready');

        });

執(zhí)行這段代碼之后,你會(huì)看到瀏覽器里面會(huì)先彈出“ready”,在彈出onload。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容