Sử dụng JavaScript với Markdown
Mặc dù Markdown chủ yếu là ngôn ngữ đánh dấu để định dạng văn bản, bạn có thể nâng cao tài liệu Markdown của mình bằng JavaScript để thêm tính tương tác và các tính năng động.
Hiểu về Giới hạn
Các trình phân tích cú pháp Markdown tiêu chuẩn không thực thi mã JavaScript. Tuy nhiên, có một số cách để tích hợp JavaScript với Markdown:
- Thẻ Script HTML: Nhúng JavaScript trực tiếp trong các khối HTML
- Bộ xử lý Markdown: Sử dụng bộ xử lý hỗ trợ thực thi JavaScript
- Trình tạo trang web tĩnh: Tận dụng xử lý JavaScript trong thời gian xây dựng
- Hiển thị phía máy khách: Thêm JavaScript sau khi chuyển đổi Markdown sang HTML
Tích hợp JavaScript Cơ bản
Thẻ Script Nội tuyến
markdown
# Tài liệu Tương tác Của Tôi
<script>
function greet() {
alert('Xin chào từ Markdown!');
}
</script>
<button onclick="greet()">Nhấp vào đây</button>Scripts Bên ngoài
markdown
<script src="https://cdn.example.com/script.js"></script>
<div id="dynamic-content"></div>Các Trường hợp Sử dụng Phổ biến
1. Biểu mẫu Tương tác
markdown
# Biểu mẫu Liên hệ
<form id="contactForm">
<input type="text" id="name" placeholder="Tên của bạn">
<input type="email" id="email" placeholder="Email của bạn">
<button type="submit">Gửi</button>
</form>
<script>
document.getElementById('contactForm').addEventListener('submit', function(e) {
e.preventDefault();
const name = document.getElementById('name').value;
alert('Cảm ơn, ' + name + '!');
});
</script>2. Tải Nội dung Động
markdown
# Bài viết Mới nhất
<div id="posts-container"></div>
<script>
fetch('/api/posts')
.then(response => response.json())
.then(posts => {
const container = document.getElementById('posts-container');
posts.forEach(post => {
container.innerHTML += `<h3>${post.title}</h3><p>${post.excerpt}</p>`;
});
});
</script>3. Trực quan hóa Dữ liệu
markdown
# Biểu đồ Doanh số
<canvas id="salesChart" width="400" height="200"></canvas>
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<script>
const ctx = document.getElementById('salesChart').getContext('2d');
new Chart(ctx, {
type: 'line',
data: {
labels: ['Tháng 1', 'Tháng 2', 'Tháng 3', 'Tháng 4'],
datasets: [{
label: 'Doanh số',
data: [12, 19, 3, 5]
}]
}
});
</script>Cân nhắc về Bảo mật
Bảo vệ chống XSS
Khi sử dụng JavaScript trong Markdown, hãy luôn làm sạch đầu vào của người dùng:
javascript
// Tệ: Tiêm HTML trực tiếp
element.innerHTML = userInput;
// Tốt: Sử dụng textContent hoặc làm sạch
element.textContent = userInput;
// hoặc
element.innerHTML = DOMPurify.sanitize(userInput);Chính sách Bảo mật Nội dung
Triển khai CSP headers để hạn chế thực thi script:
html
<meta http-equiv="Content-Security-Policy"
content="script-src 'self' https://trusted-cdn.com;">Thực hành Tốt nhất
- Tách JavaScript: Lưu trữ JavaScript trong các tệp bên ngoài khi có thể
- Cải tiến Dần dần: Đảm bảo nội dung hoạt động mà không cần JavaScript
- Sử dụng CDN: Tải thư viện phổ biến từ CDN để cache tốt hơn
- Giảm Scripts Nội tuyến: Sử dụng ủy quyền sự kiện thay vì trình xử lý nội tuyến
- Tài liệu Phụ thuộc: Chỉ rõ các thư viện JavaScript cần thiết
Kết luận
Mặc dù Markdown bản thân không thực thi JavaScript, bạn có thể kết hợp hiệu quả hai công nghệ này để tạo tài liệu phong phú và tương tác. Chọn phương pháp phù hợp nhất với trường hợp sử dụng của bạn và luôn ưu tiên bảo mật và trải nghiệm người dùng.