Sự khác biệt giữa hai sự kiện document loadDOMContentLoaded trong JavaScript liên quan đến thời điểm khi trình duyệt tải và phân tích nội dung trang.

1. DOMContentLoaded Event

  • Mô tả: Sự kiện này được kích hoạt khi toàn bộ DOM của trang đã được tải và phân tích cú pháp, nhưng không cần chờ tài nguyên ngoài (external resources) như ảnh, video, CSS hay JavaScript tải xong.
  • Thời điểm kích hoạt: Ngay sau khi cấu trúc HTML đã được tải đầy đủ và phân tích cú pháp xong. Điều này giúp các nhà phát triển có thể thao tác với DOM ngay khi nó sẵn sàng mà không cần đợi các tài nguyên khác.
  • Sử dụng: Nếu bạn muốn thực thi JavaScript ngay khi nội dung của trang đã được phân tích cú pháp, bạn nên sử dụng sự kiện này.

Ví dụ:

document.addEventListener('DOMContentLoaded', function() {
    console.log('DOM content loaded and parsed');
});
  • Thời điểm kích hoạt: Xảy ra sớm hơn load, vì không cần đợi các tài nguyên ngoài được tải xong.

2. load Event

  • Mô tả: Sự kiện này được kích hoạt khi toàn bộ trang đã được tải xong, bao gồm cả tất cả tài nguyên ngoài như hình ảnh, video, CSS, JavaScript.
  • Thời điểm kích hoạt: Chỉ khi tất cả mọi thứ trên trang đã được tải hoàn toàn, bao gồm cả các tập tin lớn như hình ảnh và video. Điều này xảy ra sau sự kiện DOMContentLoaded.
  • Sử dụng: Thích hợp khi bạn muốn thực hiện hành động chỉ khi tất cả các tài nguyên của trang đã sẵn sàng, ví dụ như muốn đảm bảo rằng tất cả hình ảnh và video đã được tải trước khi thực hiện tác vụ nào đó.

Ví dụ:

window.addEventListener('load', function() {
    console.log('All resources finished loading');
});
  • Thời điểm kích hoạt: Xảy ra muộn hơn DOMContentLoaded, chỉ khi tất cả tài nguyên đã tải xong.

So sánh:

Đặc điểmDOMContentLoaded Eventload Event
Thời điểm kích hoạtKhi DOM được phân tích cú pháp xongKhi toàn bộ trang và tài nguyên được tải xong
Tài nguyên ngoàiKhông cần chờ hình ảnh, video, CSS tải xongChờ tất cả hình ảnh, video, CSS tải xong
Thời gian kích hoạtXảy ra sớm hơnXảy ra muộn hơn
Trường hợp sử dụngThao tác DOM ngay khi HTML sẵn sàngThực hiện sau khi mọi tài nguyên đã sẵn sàng

Tóm lại:

  • DOMContentLoaded phù hợp khi bạn chỉ cần thao tác với DOM ngay khi cấu trúc HTML đã tải xong.
  • load được dùng khi bạn cần đảm bảo rằng toàn bộ tài nguyên (ảnh, video, v.v.) đã được tải trước khi thực hiện hành động.