Nên đặt file javascript ở đâu trong file HTML?

Hi ! mình đặt script ở thẻ <head> với đầu thẻ <body> toàn bị lỗi. Mình vào fb, google,… nhấn f12 thấy người ta link nhiều file js quá. không biết đặt chỗ nào tối ưu. với lại sao người ta lại chia thành thành file js, css đặt nhiều chỗ mà không phải 1 file js. css ? cảm ơn ạ.

Js tui nghĩ nên để ngay trước </body>, còn css để ở head. Lỡ js nó load chậm thì trang vẫn có html, css để hiện, ko bị cà giựt.

Có thể trang đó dùng nhiều thư viện js, css của nhiều bên thứ 3 khác nhau, mỗi nơi 1-2 file: jquery, analytics, ads…
Còn nếu là js, css tự viết thì vẫn có tool như gulp, webpack giúp gói hết lại thành 1 file.

2 Likes

Thông thường css và thư viện js mình để ở head, còn js thì viết ở trên </body>

2 Likes

css để ở head để định dạng từ đầu luôn.
js thêm async hay defer mới được chứ để đâu cũng ngưng render cả: https://developers.google.com/web/fundamentals/performance/critical-rendering-path/adding-interactivity-with-javascript#parser_blocking_versus_asynchronous_javascript

5 Likes
<html>
    <head>
           <script>
                 var x = document.getElementsByTagName("h1");
                  console.log(x[0]);  // lỗi undefined
           </script>
     </head>
      <body>
       <h1>daynhauhoc.com</h1>
     </body>
</html>

em đặt <script><head> nhưng khi load bị lỗi undefined

bạn đặt code ở head và code thao tác với DOM luôn thì sẽ gây lỗi do khi chạy đến đoạn script thì phần DOM phía dưới vẫn chưa được phân tích. Nếu cần thao tác với DOM thì có thể đăt vào cuối trang

4 Likes

Để không bị lỗi đó, người ta sử dụng sự kiện:

window.onload = function() {
   var x = document.getElementsByTagName("h1");
   console.log(x[0]);  // hết lỗi undefined
};

Có lẽ vì trình duyệt web xử lý một trang web theo kiểu cứ đọc từ trên xuống dưới và tới đâu thì parse tới đó. Các trình duyệt hiện đại ngày nay không đơn giản là đọc tới đâu parse tới đó, nhưng nếu người làm web tuân theo cách nạp truyền thống như vậy sẽ nên lúc nào đặt ở đâu.

5 Likes
5 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?