13/11/2025

Tối ưu hóa Sự Kiện Trang Web với JavaScript

Chào mọi người, mình ngồi vọc theme hiện tại của mình, thì mình tìm ra một đoạn code khá hay mà được nhiều trang web chia sẽ đó là việc tối ưu giao diệntối ưu tốc độ tải javascript khi trang chưa tải.
Trong phát triển web, việc quản lý sự kiện khi trang web đã được tải xong là một khía cạnh quan trọng để đảm bảo rằng mã JavaScript của bạn sẽ chạy đúng thời điểm.

Trong bài viết này, chúng ta sẽ khám phá hai phương pháp phổ biến để xử lý sự kiện này: sử dụng sự kiện $(document).ready() trong jQuery và sự kiện window.addEventListener('load') trong JavaScript thuần túy. Hãy cùng nhau tìm hiểu cách cả hai sự kiện này hoạt động, cũng như lựa chọn nào nên được sử dụng trong các tình huống khác nhau.

1. $(document).ready(function(){}):

Đây là một phần của thư viện jQuery. Đoạn mã này được thực thi khi DOM (Document Object Model) của trang web đã được tạo xong, nghĩa là các phần tử HTML đã được duyệt qua và có sẵn để sử dụng. Nó chạy luôn mà không đợi đến khi tất cả các tài nguyên (hình ảnh, stylesheet, v.v.) được tải xong.
$(document).ready(function() {
    // Mã JavaScript sẽ chạy luôn mà không cần chờ các thứ khác
});
Lưu ý: Đối với phiên bản mới của jQuery, bạn có thể viết ngắn gọn hơn bằng cách sử dụng $(function(){}).

2. window.addEventListener('load', function() {}):

Đoạn mã này sử dụng JavaScript thuần túy và sử dụng sự kiện load của đối tượng window. Nó sẽ chờ đến khi tất cả các tài nguyên của trang web (bao gồm cả hình ảnh, stylesheet, và script) được tải xong mới thực hiện.

Điều này có nghĩa là nếu trang web của bạn có nhiều hình ảnh hoặc tài nguyên khác cần thời gian để tải, bạn nên sử dụng sự kiện load để đảm bảo rằng mọi thứ đã sẵn sàng trước khi thực hiện mã.
window.addEventListener('load', function() {
    // Mã JavaScript sẽ phải chờ khi toàn bộ trang web đã tải xong thì mới chạy
});
Như vậy đã hoàn thành, chúc mọi người thành công.

18 comments:

  1. bạn random theme kiểu này thì blog sao tối ưu SEO được bạn

    ReplyDelete
    Replies
    1. mình muốn tạo điểm nhấn riêng cho blog của mình bạn ạ :D, nên thay đổi theme để xem có phù hợp với trang blog cá nhân hay không :D

      Delete
  2. cách này cũng tốt, nhưng thêm vào thẻ lazyload vào cho đường link nữa sẽ tốt bạn nhé :)

    ReplyDelete
  3. nay em lấn sân sang mảng food https://food.khonhactonghop.site/

    ReplyDelete
    Replies
    1. giao diện ở trang food đó nhanh đó e, nhưng ko có khung bình luận nhỉ :P

      Delete
    2. theme blogspot này theo kiểu thế hệ mới Single-Page Application (SPA), nên là ko load tí gì, chỉ lấy dữ liệu thay đổi. Theme này đang phát triển nên thiếu nhiều tính năng nữa ạ.

      Delete
    3. cái này chỉ cần F12 xong đánh dấu các điểm, khi di chuyển qua trang khác vẫn còn y nguyên ở đó. Hoặc có thể Ctr+u, sẽ không bao giờ thấy được cấu trúc của theme.

      Delete
    4. web đó mình chưa tìm hiểu nên k rỏ lắm, nhưng cũng là blogger chứ hay gì ? vì mình viewsource thấy có thông tin blogger :s

      Delete
    5. Còn hoạt động ở nền tảng blogspot mới hay ở điểm này ạ! Vì vậy mới loại bỏ tính năng bình luận mặc định của blogspot đi!

      Delete
    6. tuyệt vời quá, bạn có thể chia sẽ giao diện đó cho mình test với được không? email : bom.lanhlung@gmail.com, cảm ơn bạn :)

      Delete
    7. This comment has been removed by the author.

      Delete
    8. check mail đi ông

      Delete
  4. @Thùy Anh không có bạn ạ, bạn gửi lại mình với

    ReplyDelete
  5. @Thùy anh, à có rồi bạn có thể hướng dẫn mình cách để thiết lập chạy giao diện đc k? mình cũng đang tìm hiểu nhưng làm hoài không được : https://github.com/kumardeo/react-blogger-template

    ReplyDelete
  6. bạn cứ phân nhánh (Fork) về github của mình xong chỉnh sửa cái gì thì chỉnh sửa, đang ở tap development xong thì vào tap static-dev là lấy đc theme

    ReplyDelete
  7. Hi @Thuy Anh? minh khong hieu cach ban huong dan? co bai viet nao huong dan co hinh anh khong ban? m cam on

    ReplyDelete
  8. AI Gemini giờ thông minh mà. Cứ quăng cái mã cả kho github lên Gemini để nó đọc xong hướng dẫn dùng

    ReplyDelete
    Replies
    1. mình ngu công nghệ, nên tiếp thu chậm, cảm ơn bạn đã hướng dẫn nha, mình sẽ tìm hiểu và thử làm giao diện blog như vậy :)

      Delete

#Tags

AMP (4) BLOGGER (74) CHROME (6) CPP (1) CSHARP (25) CSS (29) DOMAIN (2) DOWNLOAD (58) FACEBOOK (4) FEELING (16) Google (7) HOSTING (2) HTML (25) JAVASCRIPT (33) MICROSOFT (2) NOTIFICATION (17) PHP (1) PROGRAM (15) Python (1) SELEMIUM (1) SEO (14) Software (16) Tips (59) Visual Basic (59) WINDOWS (31) WORDPRESS (1) YOUTUBE (6) ZALO (1)