摘要:前言是瀏覽器的內置腳本語言。避免,在結構生成之前調用節點,而產生錯誤
前言
JavaScript是瀏覽器的內置腳本語言。當網頁中嵌入了JavaScript腳本,瀏覽器加載網頁時,就會執行腳本,從而操作瀏覽器,實現各種動態效果
JavaScript代碼嵌入網頁的方法 1、元素直接嵌入代碼 2、元素加載外部腳本 標簽相關屬性 type屬性標簽默認就是JavaScript代碼,嵌入javascript腳本時,type屬性可以省略
如果type屬性的值,瀏覽器不認識,就不會執行其中的代碼,所以可以在標簽中嵌入任意的文本內容,只要加上一個瀏覽器不認識的type屬性就行,瀏覽器不會執行也不會顯示它的內容,但是這個節點依然存在于DOM之中,可以使用節點的text屬性讀取它的內容
defer屬性defer屬性的運行流程:
瀏覽器開始解析HTML網頁
解析過程中,發現帶有defer屬性的元素
瀏覽器繼續往下解析HTML網頁,同時并行下載元素加載的外部腳本
瀏覽器完成解析HTML網頁,此時再回過頭執行已經下載完成的腳本
需要注意:
異步加載資源
按照順序執行腳本
使用defer加載的外部腳本不應該使用document.write方法
async屬性async屬性的運行流程:
瀏覽器開始解析HTML網頁
解析過程中,發現帶有async屬性的標簽
瀏覽器繼續往下解析HTML網頁,同時并行下載標簽中的外部腳本
腳本下載完成,瀏覽器暫停解析HTML網頁,開始執行下載的腳本
腳本執行完畢,瀏覽器恢復解析HTML網頁
需要注意:
異步加載資源
并不會按照順序執行JS,誰先下載完,誰就先執行
使用async加載的外部腳本不應該使用document.write方法
async和defer屬性歸納都能解決“阻塞效應”
都是異步加載資源,但執行順序不一樣
如果腳本之間沒有依賴關系,就使用async屬性,如果腳本之間有依賴關系,就使用defer屬性
瀏覽器已經加載了所有依賴的資源,包括圖片樣式表等
可以在load事件觸發時獲得圖片的大小
綁定到window,window.addEventListener("load",ready);
DOMContentLoaded事件瀏覽器已經完全加載了HTML,DOM樹已經構建完畢
JS可以訪問所有DOM節點,但是圖片和樣式表等外部資源可能沒有下載完畢
綁定到document:document.addEventListener("DOMContentLoaded",ready);
涉及到async的知識點異步async腳本一定會在頁面load事件之前執行
異步async腳本可能會在DOMContentLoaded事件觸發之前或者之后執行
動態生成腳本["a.js", "b.js"].forEach(src => { const script = document.createElement("script"); script.src = src; script.async = false; document.head.appendChild(script); });
不會阻塞頁面渲染
async設置為false可以保證b.js在a.js后面執行
在這段代碼后面加載的腳本文件,會等在b.ja執行完成后再執行
相關知識點總結包含在標簽內部的JavaScript代碼,將被從上到下一次解析
無論以哪種方式嵌入代碼,只要不存在defer和async屬性,瀏覽器都會按照標簽在頁面中出現的先后順序對它們進行解析
加載外部腳本的優點:可維護性、可緩存、適應未來
放在底部的原因1、避免“阻塞效應”。2、避免,在DOM結構生成之前調用DOM節點,而產生錯誤
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/52427.html
摘要:前言是瀏覽器的內置腳本語言。避免,在結構生成之前調用節點,而產生錯誤 前言 JavaScript是瀏覽器的內置腳本語言。當網頁中嵌入了JavaScript腳本,瀏覽器加載網頁時,就會執行腳本,從而操作瀏覽器,實現各種動態效果 JavaScript代碼嵌入網頁的方法 1、元素直接嵌入代碼 function sayHello() { alert(hello!); ...
摘要:對其的解釋為概述監視一個對象的某個屬性是否發生變化在該屬性變化時立即觸發指定的回調函數語法參數想要監視值是否發生變化的指定對象的某個屬性的屬性名稱當指定的屬性發生變化時執行的回調函數在內查看其聲明如下可以看到這兩個方法是只針對內核的瀏覽器使 MDN 對其的解釋為: 概述: 監視一個對象的某個屬性是否發生變化,在該屬性變化時立即觸發指定的回調函數. 語法: object....
摘要:如果存在一個同名的全局變量,這個全局變量也不會被重寫,除非同名的局部變量被聲明時使用關鍵字。 博客原文地址:Claiyre的個人博客 https://claiyre.github.io/博客園地址:http://www.cnblogs.com/nuannuan7362/如需轉載,請在文章開頭注明原文地址------------------------------------------...
摘要:注意事項聲明函數時候處理業務邏輯區分和單例的區別,配合單例實現初始化構造函數大寫字母開頭推薦注意的成本。簡單工廠模式使用一個類通常為單體來生成實例。 @(書籍閱讀)[JavaScript, 設計模式] 常見設計模式 一直對設計模式不太懂,花了一下午加一晚上的時間,好好的看了看各種設計模式,并總結了一下。 設計模式簡介 設計模式概念解讀 設計模式的發展與在JavaScript中的應用 ...
閱讀 2062·2023-04-25 21:11
閱讀 2963·2021-09-30 09:47
閱讀 2271·2021-09-24 09:48
閱讀 4427·2021-08-23 09:43
閱讀 895·2019-08-30 15:54
閱讀 559·2019-08-28 18:01
閱讀 1397·2019-08-27 10:55
閱讀 588·2019-08-27 10:55