Большинство ответов, приведенных здесь, имеют огромный недостаток: если строка, которую вы пытаетесь преобразовать, не доверяет, вы получите уязвимость Cross-Site Scripting (XSS) . Для функции в принятом ответе рассмотрим следующее:
htmlDecode("");
Строка здесь содержит неэкранированный HTML-тег, поэтому вместо декодирования ничего функция htmlDecode
будет на самом деле запустить код JavaScript, указанный внутри строки.
Этого можно избежать, используя DOMParser , который поддерживается в всеми современными браузерами :
function htmlDecode(input)
{
var doc = new DOMParser().parseFromString(input, "text/html");
return doc.documentElement.textContent;
}
// This returns ""
htmlDecode("<img src='myimage.jpg'>");
// This returns ""
htmlDecode("");
Эта функция не гарантирует, что какой-либо код JavaScript не будет работать как побочный эффект. Любые теги HTML будут проигнорированы, будет возвращен только текстовый контент.
Замечание о совместимости : для анализа HTML с DOMParser
требуется, по крайней мере, Chrome 30, Firefox 12, Opera 17, Internet Explorer 10, Safari 7.1 или Microsoft Edge. Таким образом, все браузеры без поддержки проходят мимо EOL, и по состоянию на 2017 год единственными, которые по-прежнему могут встречаться в дикой природе, являются более старые версии Internet Explorer и Safari (как правило, они все еще недостаточно многочисленны, чтобы беспокоиться).