如何在DOM元素加載完畢后執行js代碼以及DOM加載過程

最近在寫一個動態菜單。即,根據用戶角色權限生成菜單選項。動態菜單采用js進行html代碼拼接,再append到相應的節點。但是存在一個問題,就是菜單功能的js代碼會在DOM元素加載完成之前執行,也就是菜單生成之前執行,所以所有綁定的菜單點擊事件都不能執行。

認識DOM和DOM加載過程以及如何讓DOM加載完成后再執行js腳本文件

<b>DOM加載過程:</b>
網頁文檔加載都是按順序執行的。一般瀏覽器渲染操作順序大致是一下幾個步驟:
1.解析HTML結構
2.加載外部腳本和樣式表文件
3.解析并執行腳本代碼
4.構造HTML DOM模型
5.加載圖片等外部文件
6.頁面加載完畢

從以上順序可以看出,js等腳本會在DOM文檔構造之前執行,這樣js就無法訪問DOM文檔對象模型。所以一般把可執行腳本放在頁面初始化事件處理函數中,這樣能確保文檔加載完畢后再執行腳本。所以我們一般這樣寫:
window.onload = function(){//執行腳本}
window.onload表示頁面加載完了后(包括dom和js)

window.onload = function(){//執行腳本}

這樣的話,這段js代碼將會在DOM元素加載完畢之后進行菜單點擊事件的綁定。

這個問題調試了很久很久,最后一行代碼就解決了。233...
代碼真是需要多寫,多累積經驗。感觸太深了。QAQ

window.onload大法好啊!

6-1

談談document.ready和window.onload的區別

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

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

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

原文地址:談談document.ready和window.onload的區別

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容