- vừa được xem lúc

DOM và BOM trong JavaScript là gì?

0 0 1

Người đăng: Thái Thịnh

Theo Viblo Asia

BOM là gì trong JavaScript?

BOM (Browser Object Model) về cơ bản là tập hợp các đối tượng được cung cấp bởi môi trường trình duyệt, cho phép bạn tương tác với cửa sổ trình duyệt và mọi thứ bên ngoài nội dung của trang web.

Câu hỏi đặt ra: "window" là gì?

window giống như bàn làm việc toàn cục nơi các công cụ của bạn (hàm, biến, API) được sắp xếp.

Hãy tưởng tượng trình duyệt cung cấp cho bạn một đối tượng vô hình khổng lồ gọi là window. Khi script của bạn chạy:

Nếu bạn viết var x = 5, nó sẽ được lưu dưới dạng window.x.

Nếu bạn viết function sayHi() {}, nó sẽ là window.sayHi.

Nếu bạn sử dụng alert() hay setTimeout(), thực chất bạn đang dùng window.alert()window.setTimeout().

Bạn không viết mã trực tiếp trong window, nhưng trình duyệt sẽ tự động đưa mã toàn cục của bạn vào window.

Hãy coi BOM là mọi thứ bạn có thể truy cập ở cấp trình duyệt, chẳng hạn như:

  • Mở/đóng tab mới
  • Lấy kích thước màn hình
  • Quản lý URL hoặc thanh địa chỉ
  • Thiết lập timeout
  • Tương tác với lịch sử trình duyệt

Các thành phần của mô hình cửa sổ trình duyệt (BOM)

image.png

Ví dụ thực tế (dán vào console trong Inspect Element):

console.log(window.innerHeight); //window
console.log(navigator.userAgent); // navigator
setTimeout(() => console.log("Hello"), 1000);
alert("Hi!"); //alert
const name = prompt("Your name?"); //prompt
const confirmed = confirm("Are you sure?"); //confirm
history.back(); // history

Các trường hợp sử dụng BOM

  • Kiểm soát trình duyệt động: BOM cho phép điều khiển cửa sổ trình duyệt như thay đổi kích thước, mở/đóng cửa sổ.
  • Thao tác URL: Thông qua đối tượng location.
  • Thông tin trình duyệt & thiết bị: navigator cung cấp chi tiết về trình duyệt, hệ điều hành, phần cứng.
  • Truy cập màn hình: Lấy chiều rộng, chiều cao, mật độ điểm ảnh cho responsive design.
  • Điều hướng lịch sử: Qua đối tượng history.
  • Quản lý cookie: Qua document.cookie.
  • Xử lý sự kiện & hẹn giờ: Với setTimeout, setInterval.

DOM là gì trong JavaScript?

DOM (Document Object Model) là một giao diện lập trình được trình duyệt cung cấp, đại diện cho cấu trúc của một trang web (HTML hoặc XML) dưới dạng cây đối tượng.

Mỗi phần tử như <div>, <h1>, <a>... sẽ trở thành một node trong cây này. JavaScript có thể tương tác với các node này để đọc hoặc thay đổi nội dung, cấu trúc, hoặc style một cách linh hoạt.

Ví dụ về DOM:

<!DOCTYPE html>
<html> <head> <title>My Page</title> </head> <body> <h1>Hello</h1> <p>This is a paragraph.</p> </body>
</html>

Cấu trúc cây sẽ như sau:

Document
└── html ├── head │ └── title │ └── "My Page" └── body ├── h1 │ └── "Hello" └── p └── "This is a paragraph."

Các loại node trong DOM: Document Node – gốc (tức là document) Element Nodes – tất cả các thẻ HTML như <body>, <h1>, <div>… Text Nodes – phần văn bản bên trong các phần tử Attribute Nodes – thuộc tính như id="main" hoặc class="header" Comment Nodes – các chú thích HTML (<!-- ... -->)

Các phương thức DOM phổ biến

Chọn phần tử:

document.getElementById("myId");
document.querySelector(".myClass");
document.getElementsByTagName("p");

Thay đổi nội dung:

element.innerHTML = "New content";
element.textContent = "New text only";

Thay đổi thuộc tính:

element.setAttribute("class", "new-class");
element.getAttribute("id");

Thay đổi CSS:

element.style.color = "red";

Thêm/Xóa phần tử:

const newDiv = document.createElement("div");
document.body.appendChild(newDiv);
element.remove(); // removes the element

Sự kiện DOM

JavaScript có thể phản hồi hành vi người dùng bằng cách gắn sự kiện:

document.getElementById("btn").addEventListener("click", function () { alert("Button clicked!");
});

Tại sao DOM quan trọng?

  • Kết nối HTML/CSS với JavaScript
  • Cho phép nội dung động (ví dụ: thêm mục vào danh sách, ẩn/hiện phần tử)
  • Là nền tảng cho các website tương tác hiện đại

Cảm ơn các bạn đã theo dõi!

Bình luận

Bài viết tương tự

- vừa được xem lúc

Giới thiệu Typescript - Sự khác nhau giữa Typescript và Javascript

Typescript là gì. TypeScript là một ngôn ngữ giúp cung cấp quy mô lớn hơn so với JavaScript.

0 0 544

- vừa được xem lúc

Bạn đã biết các tips này khi làm việc với chuỗi trong JavaScript chưa ?

Hi xin chào các bạn, tiếp tục chuỗi chủ đề về cái thằng JavaScript này, hôm nay mình sẽ giới thiệu cho các bạn một số thủ thuật hay ho khi làm việc với chuỗi trong JavaScript có thể bạn đã hoặc chưa từng dùng. Cụ thể như nào thì hãy cùng mình tìm hiểu trong bài viết này nhé (go).

0 0 458

- vừa được xem lúc

Một số phương thức với object trong Javascript

Trong Javascript có hỗ trợ các loại dữ liệu cơ bản là giống với hầu hết những ngôn ngữ lập trình khác. Bài viết này mình sẽ giới thiệu về Object và một số phương thức thường dùng với nó.

0 0 168

- vừa được xem lúc

Tìm hiểu về thư viện axios

Giới thiệu. Axios là gì? Axios là một thư viện HTTP Client dựa trên Promise.

0 0 156

- vừa được xem lúc

Imports và Exports trong JavaScript ES6

. Giới thiệu. ES6 cung cấp cho chúng ta import (nhập), export (xuất) các functions, biến từ module này sang module khác và sử dụng nó trong các file khác.

0 0 119

- vừa được xem lúc

Bài toán đọc số thành chữ (phần 2) - Hoàn chỉnh chương trình dưới 100 dòng code

Tiếp tục bài viết còn dang dở ở phần trước Phân tích bài toán đọc số thành chữ (phần 1) - Phân tích đề và những mảnh ghép đầu tiên. Bạn nào chưa đọc thì có thể xem ở link trên trước nhé.

0 0 262