✨Document Object Model

Document Object Model

Document Object Model (Mô hình Đối tượng Tài liệu), viết tắt là DOM, là một giao diện lập trình ứng dụng (API). Thông thường, DOM có dạng một cây cấu trúc dữ liệu, được dùng để truy xuất các tài liệu dạng HTML và XML. Mô hình DOM độc lập với hệ điều hành và dựa theo kỹ thuật lập trình hướng đối tượng để mô tả tài liệu.

Ban đầu, chưa có chuẩn thống nhất nên các thành phần trong một tài liệu HTML mô tả bằng các phiên bản khác nhau của DOM được hiển thị bởi các chương trình duyệt web thông qua JavaScript. Điều này buộc World Wide Web Consortium (W3C) phải đưa ra một loạt các mô tả kĩ thuật về tiêu chuẩn cho DOM để thống nhất mô hình này.

Mặc dù một tài liệu hay văn bản có cấu trúc chặt chẽ (well-structured document) luôn luôn có thể được mô hình hóa bằng một cấu trúc dạng cây, DOM không có giới hạn về cấu trúc dữ liệu của một tài liệu.

Hầu hết các bộ phân tích XML (XML parsers) (ví dụ: Xerces) và bộ xử lý XSL (ví dụ: Xalan) đã được phát triển để sử dụng cấu trúc cây này. Những hiện thực như vậy đòi hỏi toàn bộ nội dụng của một văn bản phải được phân tích và lưu trong bộ nhớ. Vì thế, DOM được sử dụng tốt nhất trong các ứng dụng mà trong đó các thành phần của tài liệu có thể được truy xuất và thao tác một cách ngẫu nhiên. Với các ứng dụng dựa trên XML, bao gồm yêu cầu đọc/ghi có chọn lọc cho mỗi lần phân tích (one-time selective read/write per parse), DOM cho thấy được sự tối ưu về mặt bộ nhớ. Trong các trường hợp đó thì giao diện lập trình ứng dụng SAX trở nên rất tiện lợi về cả mặt tốc độ và bộ nhớ.

Cấp độ

Các phiên bản mô hình DOM được xếp theo cấp độ hay bậc (level). Hiện tại thì, bản chi tiết kĩ thuật hiện hành của DOM đang ở cấp độ 2. Tuy vậy một số ở bản mô tả chi tiết kĩ thuật cấp độ 3 đang là khuyến khích sử dụng của W3C.

; Cấp độ 0 : Bao gồm mọi chi tiết DOM theo quy định của từng nhà phát triển riêng biệt tồn tại trước khi DOM cấp độ 1 ra đời. Ví dụ: document.images, document.forms, document.layers, và document.all. Chú ý: đây là mô tả chi tiết kĩ thuật chính thức bởi W3C hơn là một tham khảo đến những thứ tồn tại trước khi xảy ra quá trình chuẩn hóa. ; Cấp độ 1 : Cách duyệt qua tài liệu (cấu trúc cây) của DOM (HTML và XML) và thao tác nội dung (bao gồm việc thêm thành phần). Các thành phần riêng cho HTML cũng được đưa vào. ; Cấp độ 2 : Hỗ trợ không gian tên XML, khung nhìn có lọc (filtered views) và các sự kiện DOM. ; Cấp độ 3 : Nhằm nâng cao các khả năng của DOM, cấp độ 3 chứa sáu bản mô tả chi tiết kĩ thuật khác nhau: 1) the DOM Level 3 Core; 2) the DOM Level 3 Load and Save; 3) the DOM Level 3 XPath; 4) the DOM Level 3 Views and Formatting; 5) DOM Level 3 Requirements; and 6) the DOM Level 3 Validation.

Sử dụng trong trình duyệt web

Các hiện thực khác nhau của DOM trong các trình duyệt web khác nhau đã dẫn đến các vấn đề không tương hợp trong quá khứ. Vì thế, các lập trình viên web tốt hơn hết là nên kiểm tra xem một thuộc tính có tồn tại hay không trước khi sử dụng nó. Đoạn mã sau cho thấy cách kiểm tra phương thức quan trọng của W3CDOM có tồn tại hay không trước khi muốn thực thi đoạn mã phụ thuộc vào sự hỗ trợ của W3CDOM.

if (document.getElementById && document.getElementsByTagName) { // vì các phương thức quan trọng getElementById và getElementsByTagName // có mặt nên đoạn mã sau có thể an toàn mà sử dụng chúng.
 obj = document.getElementById("navigation")
 // đoạn mã khác có sử dụng W3CDOM.
 //.....

}

Chương trình duyệt Internet Explorer của Microsoft – phiên bản 5 (1999),... phiên bản 6 (2001) – là một trong các trình duyệt phổ biến nhất trong năm 2005. Internet Explorer và các trình duyệt khác dựa trên động cơ hiển thị Gecko như là Mozilla và Firefox hỗ trợ nhiều thuộc tính của W3C DOM. Vì thế các vấn đề trong việc sử dụng W3CDOM không còn tồn tại nhiều nữa như từng có trước đây với Internet Explorer 4.x và Netscape 4.x vào năm 2000. Bảng trong bài so sánh các động cơ hiển thị (DOM) cho thấy các phương thức và thuộc tính nào có thể được sử dụng một cách an toàn cho mỗi chương trình duyệt.

Bản đặc tả chi tiết kĩ thuật

👁️ 1 | 🔗 | 💖 | ✨ | 🌍 | ⌚
**Document Object Model** (Mô hình Đối tượng Tài liệu), viết tắt là **DOM**, là một giao diện lập trình ứng dụng (API). Thông thường, DOM có dạng một cây cấu trúc dữ liệu, được dùng
**Java API for XML Processing**, hay **JAXP**, là một trong các API cho lập trình Java XML. Nó cung cấp khả năng kiểm chứng và phân tích các tài liệu XML. Hai loại giao diện
Trong công nghệ phần mềm, **Adapter pattern**(mẫu thiết kế tiếp hợp) là **một mẫu thiết kế tiếp hợp** cho phép chuyển đổi một interface có sẵn thành một interface khác thích hợp cho lớp đang
**HTML động** hay **DHTML** (viết tắt tiếng Anh: _Dynamic HTML_) là một thể hiện của việc tạo ra một trang web bằng cách kết hợp các thành phần: ngôn ngữ đánh dấu HTML tĩnh, ngôn
**Opera** là một trình duyệt web và cũng là một bộ phần mềm Internet được phát triển bởi Opera Software, hiện được hơn 270 triệu người sử dụng trên thế giới. Trình duyệt này bao
**AngularJS** (còn được gọi là **Angular 1**) là một framework web miễn phí và mã nguồn mở dựa trên JavaScript, được sử dụng để phát triển các ứng dụng đơn trang (SPA). Framework này đã
**Windows Template Library** (WTL) là thư viện lập trình hướng đối tượng C++ mã nguồn mở dùng để phát triển các ứng dụng trên nền tảng hệ điều hành Windows. WTL được tạo ra bởi
**HTML5** là một ngôn ngữ cấu trúc và trình bày nội dung cho **World Wide Web** và sẽ là công nghệ cốt lõi của Internet trong tương lai không xa, được đề xuất đầu tiên
**JavaScript**, theo phiên bản hiện hành, là một ngôn ngữ lập trình được phát triển từ các ý niệm nguyên mẫu. Ngôn ngữ này được dùng rộng rãi cho các trang web (phía người dùng)
**AJAX** (tiếng Anh: "Asynchronous JavaScript and XML" - nghĩa là "JavaScript và XML không đồng bộ") là một nhóm các công nghệ phát triển web được sử dụng để tạo các ứng dụng web động
Trang đầu của website [[Wikipedia tiếng Anh, xem bởi trình duyệt Mozilla Firefox trên Microsoft Windows.]] **Website** (còn được viết là **web site**) là tập hợp các trang web và nội dung liên quan được
Đây là danh sách của một số **phần mở rộng Firefox**, tiện ích phần mềm thiết kế cho Mozilla Firefox dựa trên trình duyệt web. Nhiều phần mở rộng Firefox cũng hoạt động với các
**Thị phần người dùng của các trình duyệt web** là số phần trăm số người sử dụng một trình duyệt web đặc thù nào đó để duyệt một hoặc một nhóm các website. Ví dụ,
**Dart** là một ngôn ngữ lập trình web do Google phát triển. Nó được chính thức công bố tại [http://gotocon.com/aarhus-2011/ Hội thảo GOTO] ngày 10-12 tháng 10 năm 2011 tại Aarhus. Mục đích của Dart
nhỏ|SpiderMonkey logo **Engine JavaScript** là một thành phần phần mềm thực thi mã JavaScript. Các JavaScript engine đầu tiên chỉ là trình thông dịch, nhưng tất cả các engine hiện đại đều sử dụng biên
Cơ sở dữ liệu **NoSQL** (tên gốc là "Non SQL" (phi SQL) hoặc "non relational" (phi quan hệ)) cung cấp một cơ chế để lưu trữ và truy xuất dữ liệu được mô hình hóa