Hướng dẫn can i escape html special characters in javascript? - tôi có thể thoát các ký tự đặc biệt html trong javascript không?

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[/[&

Bài Viết Liên Quan

Chủ Đề