Кодування HTML просто замінюючи &, ", ', <і >символи з їх еквівалентами сутностей. Порядок має значення, якщо спочатку ви не заміните &символи, ви подвоїте кодування деяких об’єктів:
if (!String.prototype.encodeHTML) {
String.prototype.encodeHTML = function () {
return this.replace(/&/g, '&')
.replace(/</g, '<')
.replace(/>/g, '>')
.replace(/"/g, '"')
.replace(/'/g, ''');
};
}
Як зазначив @Johan BW de Vries, у цього будуть проблеми з назвами тегів, я хотів би пояснити, що я зробив припущення, що це було використано для value єдиного
І навпаки , якщо ви хочете , щоб розшифрувати HTML сутностей 1 , переконайтеся , що ви розшифрувати , &щоб &після того, як все інше , так що ви не подвійний декодує будь-які об'єкти:
if (!String.prototype.decodeHTML) {
String.prototype.decodeHTML = function () {
return this.replace(/'/g, "'")
.replace(/"/g, '"')
.replace(/>/g, '>')
.replace(/</g, '<')
.replace(/&/g, '&');
};
}
1 тільки основи, не включаючи ©в ©або інші подібні речі
Що стосується бібліотек. Underscore.js (або Lodash, якщо хочете) надає _.escapeметод для виконання цієї функціональності.