HTML-Script 屬性
src屬性
src 屬性指定外部腳本的 URL,允許開發者將 JavaScript 程式碼組織在單獨檔案中,而非直接寫在 HTML 內。當<script>
標籤包含src屬性時,不應包含嵌入式腳本程式碼。
type屬性
type 屬性聲明腳本的 MIME 類型 (現已非必需,因為現代瀏覽器預設使用JavaScript)。早期 HTML 規範中,這個屬性用來指示腳本語言的類型,如”text/javascript
“ 或 “application/javascript
“。
async屬性
async 屬性是個布林屬性,告訴瀏覽器非同步的載入檔案。這意味著腳本會在下載完畢後儘快執行,但不會阻塞 HTML 文件的解析。此屬性僅適用於帶有src屬性的<script>
標籤。
1 | <script src="xxx/script.js" async></script> |
defer屬性
與async屬性類似,defer屬性也會指示瀏覽器非同步載入腳本,但有個關鍵不同:帶有 defer
屬性的腳本保證會在文件解析完成後、DOMContentLoaded事件觸發前,按照它們在檔案中出現的順序執行。這也僅適用於帶有src屬性的腳本。
1 | <script src="xxx/script.js" defer></script> |
(圖片來源:Speed up Google Maps(and everything else) with async & defer)
crossorigin屬性
crossorigin
屬性用於設定與跨源資源共享 (CORS) 相關設定。對於從CDN等不同來源載入的腳本特別重要。它可設為”anonymous
“(不會發送用戶憑證) 或 “use-credentials
“ (會發送使用者憑證)。
1 | <script src="https://cdn.example.com/library.js" crossorigin="anonymous"></script> |
integrity屬性
integrity
屬性提供了一種安全特性,允許瀏覽器驗證取得的資源是否未經篡改。透過與腳本匹配的Hash值 (如SHA-256) 來確保腳本的完整性。
當瀏覽器載入帶有 integrity
屬性的資源時,它會計算從網絡上取得的文件的Hash值,並與integrity
屬性中指定的Hash值進行比對:
如果兩個Hash值相同,則認為這個檔案是安全的,未被篡改,瀏覽器將正常載入和執行該檔案。
如果Hash值不同,則表示檔案可能在傳輸過程中被篡改,瀏覽器會拒絕載入該文件,以保護 Client 免受潛在的安全風險。
1 | <script src="https://cdn.example.com/library.js" integrity="sha256-Hash值"></script> |