Tôi muốn hiển thị văn bản cho HTML bằng hàm JavaScript. Làm thế nào tôi có thể thoát khỏi các ký tự đặc biệt HTML trong JavaScript? Có API không?
Đã hỏi ngày 4 tháng 6 năm 2011 lúc 4:50Jun 4, 2011 at 4:50
3
Đây là một giải pháp sẽ hoạt động trong thực tế mọi trình duyệt web:
function escapeHtml[unsafe]
{
return unsafe
.replace[/&/g, "&"]
.replace[//g, ">"]
.replace[/"/g, """]
.replace[/'/g, "'"];
}
Nếu bạn chỉ hỗ trợ các trình duyệt web hiện đại [2020+], thì bạn có thể sử dụng chức năng Replaceall mới:
const escapeHtml = [unsafe] => {
return unsafe.replaceAll['&', '&'].replaceAll['', '>'].replaceAll['"', '"'].replaceAll["'", '''];
}
Dthree
Phim huy hiệu vàng 18,9K1414 gold badges71 silver badges103 bronze badges
Đã trả lời ngày 4 tháng 6 năm 2011 lúc 5:00Jun 4, 2011 at 5:00
Bjorndbjorndbjornd
21,9K4 Huy hiệu vàng55 Huy hiệu bạc71 Huy hiệu đồng4 gold badges55 silver badges71 bronze badges
13
function escapeHtml[html]{
var text = document.createTextNode[html];
var p = document.createElement['p'];
p.appendChild[text];
return p.innerHTML;
}
// Escape while typing & print result
document.querySelector['input'].addEventListener['input', e => {
console.clear[];
console.log[ escapeHtml[e.target.value] ];
}];
vsync
109K54 Huy hiệu vàng288 Huy hiệu bạc374 Huy hiệu đồng54 gold badges288 silver badges374 bronze badges
Đã trả lời ngày 20 tháng 8 năm 2014 lúc 2:50Aug 20, 2014 at 2:50
Spiderlamaspiderlamaspiderlama
1.44314 Huy hiệu bạc10 Huy hiệu đồng14 silver badges10 bronze badges
2
Bạn có thể sử dụng chức năng
function escapeHtml[html]{
var text = document.createTextNode[html];
var p = document.createElement['p'];
p.appendChild[text];
return p.innerHTML;
}
// Escape while typing & print result
document.querySelector['input'].addEventListener['input', e => {
console.clear[];
console.log[ escapeHtml[e.target.value] ];
}];
3 của JQuery.Ví dụ:
//jsfiddle.net/9H6Ch/
Từ tài liệu jQuery liên quan đến hàm
function escapeHtml[html]{
var text = document.createTextNode[html];
var p = document.createElement['p'];
p.appendChild[text];
return p.innerHTML;
}
// Escape while typing & print result
document.querySelector['input'].addEventListener['input', e => {
console.clear[];
console.log[ escapeHtml[e.target.value] ];
}];
3:Chúng ta cần lưu ý rằng phương pháp này thoát khỏi chuỗi được cung cấp khi cần thiết để nó sẽ hiển thị chính xác trong HTML. Để làm như vậy, nó gọi phương thức DOM .CreateTextNode [], không hiểu chuỗi là HTML.
Các phiên bản trước của tài liệu jQuery đã nói theo cách này [nhấn mạnh thêm]:
Chúng ta cần lưu ý rằng phương pháp này thoát khỏi chuỗi được cung cấp khi cần thiết để nó sẽ hiển thị chính xác trong HTML. Để làm như vậy, nó gọi phương thức DOM .CreateTextNode [], thay thế các ký tự đặc biệt bằng các tương đương thực thể HTML của chúng [chẳng hạn như & lt;which replaces special characters with their HTML entity equivalents [such as < for 'fred, barney, & pebbles'
Mã nguồn
Đã trả lời ngày 30 tháng 10 năm 2016 lúc 19:41Oct 30, 2016 at 19:41
cs01cs01cs01
4.9671 Huy hiệu vàng28 Huy hiệu bạc28 Huy hiệu đồng1 gold badge28 silver badges28 bronze badges
3
Tôi nghĩ rằng tôi đã tìm thấy cách thích hợp để làm điều đó ...
// Create a DOM Text node: var text_node = document.createTextNode[unescaped_text]; // Get the HTML element where you want to insert the text into: var elem = document.getElementById['msg_span']; // Optional: clear its old contents //elem.innerHTML = ''; // Append the text node into it: elem.appendChild[text_node];
Đã trả lời ngày 7 tháng 8 năm 2013 lúc 16:16Aug 7, 2013 at 16:16
Lvellalvellalvella
Huy hiệu vàng 12K1149 Huy hiệu bạc98 Huy hiệu đồng11 gold badges49 silver badges98 bronze badges
4
Đây là, cho đến nay, cách nhanh nhất tôi đã thấy nó được thực hiện. Thêm vào đó, nó làm tất cả mà không cần thêm, xóa hoặc thay đổi các yếu tố trên trang.
function escapeHTML[unsafeText] { let div = document.createElement['div']; div.innerText = unsafeText; return div.innerHTML; }
Đã trả lời ngày 2 tháng 1 năm 2018 lúc 0:11Jan 2, 2018 at 0:11
Arjunpatarjunpatarjunpat
5894 Huy hiệu bạc10 Huy hiệu đồng4 silver badges10 bronze badges
4
Thật thú vị khi tìm ra một giải pháp tốt hơn:
var escapeHTML = function[unsafe] { return unsafe.replace[/[&