Matthias Bynens имеет библиотеку для этого: https://github.com/mathiasbynens/he
Пример:
console.log(
he.decode("Jörg & Jürgen rocked to & fro ")
);
// Logs "Jörg & Jürgen rocked to & fro"
Я предлагаю отдать предпочтение этому хаку, включающему установку HTML-содержимого элемента и последующее чтение его текстового содержимого,Такие подходы могут работать, но они обманчиво опасны и представляют возможности XSS, если они используются для ненадежного пользовательского ввода.
Если вы действительно не можете переносить загрузку в библиотеку, вы можете использовать хак textarea
, описанный в этот ответ на почти повторяющийся вопрос, который, в отличие от предложенных различных похожих подходов, не имеет дыр в безопасности, о которых я знаю:
function decodeEntities(encodedString) {
var textArea = document.createElement('textarea');
textArea.innerHTML = encodedString;
return textArea.value;
}
console.log(decodeEntities('1 & 2')); // '1 & 2'
Но обратите внимание на проблемы безопасности, затрагивающие сходные подходы к этому, которые я перечислю в связанном ответе!Этот подход является взломом, и будущие изменения в допустимом содержимом textarea
(или ошибок в определенных браузерах) могут привести к тому, что в коде однажды возникнет дыра в XSS.