Tạo thẻ <script> bằng document.createElement('script'), set src, thêm vào <head> hoặc <body>. Hữu ích cho lazy-load, load điều kiện, plugin system.
Ví dụ
Nhấn nút để load động sample.js:
<!DOCTYPE html>
<html lang="vi">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Load JS động</title>
<style>
body { font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif; }
.result { font-size: 20px; font-weight: 500; color: green; }
</style>
</head>
<body>
<h1>Tải file JavaScript động</h1>
<div class="result"></div>
<button class="Btn">LOAD SCRIPT</button>
<h3>Nhấn để nạp sample.js động</h3>
<script>
const resEle = document.querySelector(".result");
document.querySelector(".Btn").addEventListener("click", () => {
const script = document.createElement('script');
script.src = 'sample.js';
script.onload = () => console.log('Script loaded');
script.onerror = () => resEle.textContent = 'Lỗi tải script';
document.head.appendChild(script);
});
</script>
</body>
</html>
sample.js
document.querySelector('.result').textContent = 'JavaScript đã được tải động!';
Kết quả
Ban đầu rỗng. Sau khi nhấn "LOAD SCRIPT", văn bản "JavaScript đã được tải động!" hiện ra.
Mẹo: Dùng async/await với import() (dynamic import) cho module ES6: const mod = await import('./module.js').