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ướ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?

Đã 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('"', '"').replaceAll("'", ''');
}

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?

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ụ:

http://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 <).

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?

FGB

18.3k2 Huy hiệu vàng37 Huy hiệu bạc52 Huy hiệu Đồng2 gold badges37 silver badges52 bronze badges

Đã trả lời ngày 4 tháng 6 năm 2011 lúc 5:01Jun 4, 2011 at 5:01

Jeremysawesmyjeremysawiejeremysawesome

6.8655 Huy hiệu vàng33 Huy hiệu bạc37 Huy hiệu đồng5 gold badges33 silver badges37 bronze badges

2

Sử dụng Lodash:

_.escape('fred, barney, & pebbles');
// => 'fred, barney, & pebbles'

Mã nguồn

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?

Đã trả lời ngày 30 tháng 10 năm 2016 lúc 19:41Oct 30, 2016 at 19:41

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?

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

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?

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(/[&<"']/g, function(m) {
    switch (m) {
      case '&':
        return '&';
      case '<':
        return '<';
      case '"':
        return '"';
      default:
        return ''';
    }
  });
};

Tôi không phân tích cú pháp

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) );
});
5 vì nó không phá vỡ mã XML/HTML trong kết quả.

Dưới đây là điểm chuẩn: http://jsperf.com/regexpairs, tôi đã tạo một 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) );
});
6 phổ quát: http://jsperf.com/regexpairs2

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?

76484

6.1103 Huy hiệu vàng16 Huy hiệu bạc27 Huy hiệu đồng3 gold badges16 silver badges27 bronze badges

Đã trả lời ngày 11 tháng 2 năm 2015 lúc 15:41Feb 11, 2015 at 15:41

Iegikiegikiegik

1.3651 Huy hiệu vàng16 Huy hiệu bạc29 Huy hiệu đồng1 gold badge16 silver badges29 bronze badges

4

Cách ngắn gọn và hiệu suất nhất để hiển thị văn bản không được mã hóa là sử dụng thuộc tính

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) );
});
7.

Nhanh hơn sử dụ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) );
});
8. Và đó là không tính đến việc trốn thoát trên cao.

document.body.textContent = 'a  c ';

Đã trả lời ngày 29 tháng 11 năm 2017 lúc 2:57Nov 29, 2017 at 2:57

Người dùnguser

21.1k9 Huy hiệu vàng110 Huy hiệu bạc99 Huy hiệu đồng9 gold badges110 silver badges99 bronze badges

1

Các phần tử DOM Hỗ trợ chuyển đổi văn bản thành HTML bằng cách gán cho InnerText. Innertext không phải là một chức năng nhưng gán cho nó hoạt động như thể văn bản đã được thoát ra.innerText. innerText is not a function but assigning to it works as if the text were escaped.

document.querySelectorAll('#id')[0].innerText = 'unsafe " String >><>';

Đã trả lời ngày 21 tháng 8 năm 2017 lúc 10:27Aug 21, 2017 at 10:27

Teknopaultknopaulteknopaul

6.2772 Huy hiệu vàng28 Huy hiệu bạc23 Huy hiệu đồng2 gold badges28 silver badges23 bronze badges

2

Bạn có thể mã hóa mọi ký tự trong chuỗi của mình:

const escapeHtml = (unsafe) => {
    return unsafe.replaceAll('&', '&').replaceAll('<', '<').replaceAll('>', '>').replaceAll('"', '"').replaceAll("'", ''');
}
0

Hoặc chỉ nhắm mục tiêu các nhân vật chính phải lo lắng về (&, sự phá vỡ,, "và ') như:

const escapeHtml = (unsafe) => {
    return unsafe.replaceAll('&', '&').replaceAll('<', '<').replaceAll('>', '>').replaceAll('"', '"').replaceAll("'", ''');
}
1
const escapeHtml = (unsafe) => {
    return unsafe.replaceAll('&', '&').replaceAll('<', '<').replaceAll('>', '>').replaceAll('"', '"').replaceAll("'", ''');
}
2

Đã trả lời ngày 26 tháng 7 năm 2015 lúc 13:54Jul 26, 2015 at 13:54

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?

Dave Browndave BrownDave Brown

9079 huy hiệu bạc6 Huy hiệu đồng9 silver badges6 bronze badges

1

Bởi những cuốn sách

OWASP khuyến nghị rằng "[e] xcept cho các ký tự chữ và số, [bạn nên] thoát khỏi tất cả các ký tự có giá trị ASCII nhỏ hơn 256 với định dạ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) );
});
9 (hoặc một thực thể được đặt tên nếu có sẵn) để ngăn chặn việc chuyển ra khỏi thuộc tính [một]."

Vì vậy, đây là một chức năng làm điều đó, với một ví dụ sử dụng:

const escapeHtml = (unsafe) => {
    return unsafe.replaceAll('&', '&').replaceAll('<', '<').replaceAll('>', '>').replaceAll('"', '"').replaceAll("'", ''');
}
3
const escapeHtml = (unsafe) => {
    return unsafe.replaceAll('&', '&').replaceAll('<', '<').replaceAll('>', '>').replaceAll('"', '"').replaceAll("'", ''');
}
4

Bạn nên xác minh phạm vi thực thể tôi đã cung cấp để tự xác nhận sự an toàn của chức năng. Bạn cũng có thể sử dụng biểu thức thông thường này có khả năng đọc tốt hơn và nên bao gồm cùng một mã ký tự, nhưng ít hơn khoảng 10% trong trình duyệt của tôi:

0

Đã trả lời ngày 4 tháng 3 năm 2021 lúc 19:40Mar 4, 2021 at 19:40

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?

AdjenksadjenksADJenks

2.55724 Huy hiệu bạc34 Huy hiệu đồng24 silver badges34 bronze badges

0

Nếu bạn đã sử dụng các mô-đun trong ứng dụng của mình, bạn có thể sử dụng mô-đun Escape-HTML.

const escapeHtml = (unsafe) => {
    return unsafe.replaceAll('&', '&').replaceAll('<', '<').replaceAll('>', '>').replaceAll('"', '"').replaceAll("'", ''');
}
5

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?

Đã trả lời ngày 11 tháng 3 năm 2020 lúc 15:13Mar 11, 2020 at 15:13

Shimon sshimon sShimon S

3,8282 Huy hiệu vàng26 Huy hiệu bạc33 Huy hiệu đồng2 gold badges26 silver badges33 bronze badges

Tôi đã bắt gặp vấn đề này khi xây dựng một cấu trúc DOM. Câu hỏi này đã giúp tôi giải quyết nó. Tôi muốn sử dụng một chevron kép làm dấu phân cách đường dẫn, nhưng việc nối thêm một nút văn bản mới trực tiếp dẫn đến mã ký tự thoát ra, thay vì chính ký tự:

const escapeHtml = (unsafe) => {
    return unsafe.replaceAll('&', '&').replaceAll('<', '<').replaceAll('>', '>').replaceAll('"', '"').replaceAll("'", ''');
}
6

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?

Đã trả lời ngày 30 tháng 7 năm 2019 lúc 8:36Jul 30, 2019 at 8:36

SilassilasSilas

Huy hiệu 111 Đồng1 bronze badge

Chỉ cần viết mã ở giữa

1. Hãy chắc chắn rằng bạn thêm tên lớp trong thẻ mã. Nó sẽ thoát khỏi tất cả các đoạn trích HTML được viết trong
1.
1.

const escapeHtml = (unsafe) => {
    return unsafe.replaceAll('&', '&').replaceAll('<', '<').replaceAll('>', '>').replaceAll('"', '"').replaceAll("'", ''');
}
7
const escapeHtml = (unsafe) => {
    return unsafe.replaceAll('&', '&').replaceAll('<', '<').replaceAll('>', '>').replaceAll('"', '"').replaceAll("'", ''');
}
8

Đã trả lời ngày 14 tháng 4 năm 2021 lúc 8:41Apr 14, 2021 at 8:41

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?

Sử dụng điều này để xóa các thẻ HTML khỏi chuỗi trong JavaScript:

const escapeHtml = (unsafe) => {
    return unsafe.replaceAll('&', '&').replaceAll('<', '<').replaceAll('>', '>').replaceAll('"', '"').replaceAll("'", ''');
}
9

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?

Đã trả lời ngày 10 tháng 9 năm 2020 lúc 14:40Sep 10, 2020 at 14:40

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?

1

Hãy thử điều này, sử dụng thư viện

3:

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) );
});
0

Hãy thử một bản demo

JD.

2.9952 Huy hiệu vàng25 Huy hiệu bạc37 Huy hiệu đồng2 gold badges25 silver badges37 bronze badges

Đã trả lời ngày 16 tháng 4 năm 2014 lúc 20:48Apr 16, 2014 at 20:48

May mắn may mắnLucky

7152 Huy hiệu vàng10 Huy hiệu bạc27 Huy hiệu đồng2 gold badges10 silver badges27 bronze badges

1

Tôi đã đưa ra giải pháp này.

Giả sử rằng chúng tôi muốn thêm một số HTML vào phần tử với dữ liệu không an toàn từ người dùng hoặc cơ sở dữ liệu.

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) );
});
1

Nó không an toàn chống lại các cuộc tấn công XSS. Bây giờ thêm điều này: $ (Document.CreateEement ('Div')). HTML (không an toàn) .text ();

Nên nó là

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) );
});
2

Đối với tôi, điều này dễ dàng hơn nhiều so với việc sử dụng

4 và nó sẽ loại bỏ !!! Tất cả các thẻ HTML có thể (tôi hy vọng).

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?

Đã trả lời ngày 30 tháng 3 năm 2016 lúc 9:53Mar 30, 2016 at 9:53

KostiantynkostiantynKostiantyn

1.5741 Huy hiệu vàng15 Huy hiệu bạc20 Huy hiệu Đồng1 gold badge15 silver badges20 bronze badges

2

Tôi có thể thoát khỏi các ký tự đặc biệt của HTML trong JavaScript không?

Chuỗi - chúng ta có thể chuyển bất kỳ chuỗi HTML nào dưới dạng đối số để thoát khỏi các ký tự đặc biệt và mã hóa nó.We can pass any HTML string as an argument to escape special characters and encode it.

Làm thế nào để bạn thoát khỏi HTML bằng JavaScript?

Thoát HTML..
Sử dụng chuỗi.nguyên mẫu.thay thế () bằng regexp phù hợp với các nhân vật cần được thoát ..
Sử dụng chức năng gọi lại để thay thế từng thể hiện ký tự bằng ký tự thoát được liên kết của nó bằng cách sử dụng một đối tượng từ điển ..

Làm thế nào để bạn thoát khỏi các ký tự đặc biệt trong HTML?

Chúng ta có thể thoát khỏi HTML của chuỗi bằng phương thức thay thế của chuỗi ...
ít hơn biểu tượng (
lớn hơn biểu tượng (>) với & gt ;.
Báo giá kép (") với & quot ;.
Trích dẫn đơn (') với ' ;.
ampersand (&) với & amp ;.

Những nhân vật nào cần được thoát khỏi JavaScript?

Bất kỳ ký tự nào có mã ký tự thấp hơn 256 (nghĩa là bất kỳ ký tự nào trong phạm vi ASCII mở rộng) đều có thể được thoát bằng mã ký tự được mã hóa hex, được đặt trước với \ x.(Lưu ý rằng đây là cùng một loạt các ký tự có thể được thoát qua những lối thoát octal.) (i.e. any character in the extended ASCII range) can be escaped using its hex-encoded character code, prefixed with \x . (Note that this is the same range of characters that can be escaped through octal escapes.)