Hướng dẫn best place to put script tag in html - nơi tốt nhất để đặt thẻ script trong html

Đây là những gì xảy ra khi trình duyệt tải một trang web có thẻ

Welcome back, user

JavaScript:

// my-script.js
document.addEventListener("DOMContentLoaded", function() {
    // this function runs when the DOM is ready, i.e. when the document has been parsed
    document.getElementById("user-greeting").textContent = "Welcome back, Bart";
});

Bởi vì trình duyệt của bạn không biết My-script.js sẽ không sửa đổi tài liệu cho đến khi nó được tải xuống và thực thi, trình phân tích cú pháp dừng phân tích cú pháp.

Khuyến nghị cổ xưa

Cách tiếp cận cũ để giải quyết vấn đề này là đặt các thẻ

không đồng bộ



Các tập lệnh với thuộc tính Async được thực thi không đồng bộ. Điều này có nghĩa là tập lệnh được thực thi ngay khi tải xuống, mà không chặn trình duyệt trong lúc này. Điều này ngụ ý rằng có thể tập lệnh 2 được tải xuống và thực thi trước tập lệnh 1.

Theo http://caniuse.com/#feat=script-async, 97,78% của tất cả các trình duyệt hỗ trợ điều này.

hoãn lại



Các tập lệnh với thuộc tính trì hoãn được thực thi theo thứ tự (nghĩa là tập lệnh đầu tiên 1, sau đó tập lệnh 2). Điều này cũng không chặn trình duyệt.

Không giống như các tập lệnh Async, các tập lệnh trì hoãn chỉ được thực thi sau khi toàn bộ tài liệu đã được tải.

Theo http://caniuse.com/#feat=script-defer, 97,79% của tất cả các trình duyệt hỗ trợ điều này. 98,06% hỗ trợ nó ít nhất một phần.

Một lưu ý quan trọng về khả năng tương thích của trình duyệt: Trong một số trường hợp, Internet & nbsp; Explorer 9 trở lên có thể thực hiện các tập lệnh được hoãn lại theo thứ tự. Nếu bạn cần hỗ trợ các trình duyệt đó, xin vui lòng đọc điều này trước!

.

Sự kết luận

Trạng thái hiện tại là đặt các tập lệnh vào thẻ

// my-script.js
document.addEventListener("DOMContentLoaded", function() {
    // this function runs when the DOM is ready, i.e. when the document has been parsed
    document.getElementById("user-greeting").textContent = "Welcome back, Bart";
});
1 và sử dụng các thuộc tính async hoặc
// my-script.js
document.addEventListener("DOMContentLoaded", function() {
    // this function runs when the DOM is ready, i.e. when the document has been parsed
    document.getElementById("user-greeting").textContent = "Welcome back, Bart";
});
0. Điều này cho phép các tập lệnh của bạn được tải xuống càng sớm càng tốt mà không chặn trình duyệt của bạn.

Điều tốt là trang web của bạn vẫn nên tải chính xác vào 2% trình duyệt không hỗ trợ các thuộc tính này trong khi tăng tốc 98% khác.

Người giới thiệu

  • Thuộc tính Async vs Defer
  • Tải JavaScript hiệu quả với Defer và Async
  • Loại bỏ kết xuất chặn JavaScript
  • Async, trì hoãn, mô -đun: một trò gian lận trực quan