Có thể bạn không cần một chức năng như vậy. Vì mã của bạn đã có trong trình duyệt *, bạn có thể truy cập trực tiếp vào DOM thay vì tạo và mã hóa HTML sẽ phải được giải mã ngược bởi trình duyệt thực sự được sử dụng.
Sử dụng thuộc innerText
tính để chèn văn bản đơn giản vào DOM một cách an toàn và nhanh hơn nhiều so với sử dụng bất kỳ chức năng thoát nào được trình bày. Thậm chí nhanh hơn việc gán một chuỗi tiền mã hóa tĩnh cho innerHTML
.
Sử dụng classList
để chỉnh sửa các lớp, dataset
để đặt data-
thuộc tính và setAttribute
cho người khác.
Tất cả những điều này sẽ xử lý thoát cho bạn. Chính xác hơn, không cần thoát và không mã hóa sẽ được thực hiện bên dưới **, vì bạn đang làm việc xung quanh HTML, biểu diễn văn bản của DOM.
// use existing element
var author = 'John "Superman" Doe <john@example.com>';
var el = document.getElementById('first');
el.dataset.author = author;
el.textContent = 'Author: '+author;
// or create a new element
var a = document.createElement('a');
a.classList.add('important');
a.href = '/search?q=term+"exact"&n=50';
a.textContent = 'Search for "exact" term';
document.body.appendChild(a);
// actual HTML code
console.log(el.outerHTML);
console.log(a.outerHTML);
.important { color: red; }
<div id="first"></div>
* Câu trả lời này không dành cho người dùng JavaScript phía máy chủ (Node.js, v.v. )
** Trừ khi bạn chuyển đổi rõ ràng thành HTML thực tế sau đó. Ví dụ: bằng cách truy cập innerHTML
- đây là những gì xảy ra khi bạn chạy được $('<div/>').text(value).html();
đề xuất trong các câu trả lời khác. Vì vậy, nếu mục tiêu cuối cùng của bạn là chèn một số dữ liệu vào tài liệu, bằng cách thực hiện theo cách này, bạn sẽ thực hiện công việc hai lần. Ngoài ra, bạn có thể thấy rằng trong HTML kết quả, không phải mọi thứ đều được mã hóa, chỉ có mức tối thiểu cần thiết để nó hợp lệ. Nó được thực hiện một cách phụ thuộc vào ngữ cảnh, đó là lý do tại sao phương thức jQuery này không mã hóa các trích dẫn và do đó không nên được sử dụng như một công cụ thoát hiểm cho mục đích chung. Báo giá thoát là cần thiết khi bạn xây dựng HTML dưới dạng một chuỗi với dữ liệu không đáng tin cậy hoặc có chứa trích dẫn tại vị trí của giá trị thuộc tính. Nếu bạn sử dụng API DOM, bạn hoàn toàn không phải lo lắng về việc thoát.