這篇文章帶給大家的內容是關於Javascript中的defer屬性和async屬性的用法詳解,有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。
為什麼需要非同步載入js檔案:
不使用非同步,文件在載入js程式碼時會阻塞其他資源的下載,導致空白頁面。
(1)放在頂部的js腳本,瀏覽器在執行時需要花費時間去下載外鏈檔案的程式碼並執行,此時會導致明顯的延遲,顯示為空白頁面,用戶無法瀏覽內容,也無法與頁面互動。
(2)雖然IE8、Firefox3.5、Safari4、Chrome2都允許並行下載Javascript文件,腳本的下載過程不會互相影響,但頁面的加載仍舊需要等到所有的Javascript代碼下載並執行完成才能繼續。正因為如此,建議將<script>標籤置於<body>的底部。 </script>
(3)由於每個<script>標籤下載時都會阻塞頁面渲染,因此建議減少<script>標籤的使用。不僅是外鏈腳本,內嵌腳本也是如此。瀏覽器在解析HTML頁面時每遇到一個<script>標籤都會因為執行腳本而導致一定的延遲。此外,考慮到HTTP請求帶來額外的效能開銷,下載單一100KB的檔案將比下載4個25KB的檔案更快。 </script>
defer和async的用法:
相同點:defer和async都是用來非同步載入腳本。採用並行下載,在下載過程中不會產生阻塞。
不同點:
defer:
(1)即可用於載入外部腳本,也可用於載入內嵌腳本。內嵌腳本僅限於IE9及以下,主流瀏覽器依據W3C的HTML5規格:defer僅當src屬性宣告時生效。
如:
//外部脚本<script src="1.js" defer></script>//内嵌脚本<script defer> console.log("defer");</script>
(2)帶有defer屬性的<script>標籤可以放在頁面的任何位置,對應的Javascript檔案會在頁面解析到<script>標籤時開始下載,但不會執行,DOM載入完成後執行(在onload事件之前呼叫)。 </script>
async:
(1)只用於外部腳本。
(2)async載入完成後立即執行。
附:defer屬性的瀏覽器支援情況詳見:https://caniuse.com/#feat=script-defer,搜尋defer即可。
為什麼需要非同步載入js檔案:
不使用非同步,文件在載入js程式碼時會阻塞其他資源的下載,導致空白頁面。
(1)放在頂部的js腳本,瀏覽器在執行時需要花費時間去下載外鏈檔案的程式碼並執行,此時會導致明顯的延遲,顯示為空白頁面,用戶無法瀏覽內容,也無法與頁面互動。
(2)雖然IE8、Firefox3.5、Safari4、Chrome2都允許並行下載Javascript文件,腳本的下載過程不會互相影響,但頁面的加載仍舊需要等到所有的Javascript代碼下載並執行完成才能繼續。正因為如此,建議將

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

Atom編輯器mac版下載
最受歡迎的的開源編輯器

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

SublimeText3漢化版
中文版,非常好用

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。