Unescape HTML сущности в Javascript? - PullRequest
133 голосов
/ 16 декабря 2009

У меня есть некоторый код Javascript, который связывается с бэкэндом XML-RPC. XML-RPC возвращает строки вида:

<img src='myimage.jpg'>

Однако, когда я использую Javascript для вставки строк в HTML, они отображаются буквально. Я не вижу изображения, я буквально вижу строку:

<img src='myimage.jpg'>

Я предполагаю, что HTML экранируется по каналу XML-RPC.

Как я могу удалить строку в Javascript? Я попробовал методы на этой странице, но безуспешно: http://paulschreiber.com/blog/2008/09/20/javascript-how-to-unescape-html-entities/

Какие есть другие способы диагностики проблемы?

Ответы [ 11 ]

0 голосов
/ 14 июля 2017

Я использую это в своем проекте: вдохновленный другими ответами , но с дополнительным безопасным параметром, может быть полезен, когда вы имеете дело с украшенными персонажами

var decodeEntities=(function(){

    var el=document.createElement('div');
    return function(str, safeEscape){

        if(str && typeof str === 'string'){

            str=str.replace(/\</g, '&lt;');

            el.innerHTML=str;
            if(el.innerText){

                str=el.innerText;
                el.innerText='';
            }
            else if(el.textContent){

                str=el.textContent;
                el.textContent='';
            }

            if(safeEscape)
                str=str.replace(/\</g, '&lt;');
        }
        return str;
    }
})();

И это можно использовать как:

var label='safe <b> character &eacute;ntity</b>';
var safehtml='<div title="'+decodeEntities(label)+'">'+decodeEntities(label, true)+'</div>';
...