一尘不染

JavaScript解码其中包含特殊HTML实体的字符串的正确方法是什么?

javascript

假设我从服务请求中获取了一些JSON,如下所示:

{
    "message": "We're unable to complete your request at this time."
}

我不确定 为什么 撇号会像这样编码('); 我所知道的是我想对其进行解码。

这是一种使用jQuery的方法,它突然出现在我的脑海:

function decodeHtml(html) {
    return $('<div>').html(html).text();
}

不过,这似乎(非常)骇人听闻。有什么更好的方法?有没有“正确”的方法?


阅读 299

收藏
2020-04-25

共1个答案

一尘不染

这是我最喜欢的解码HTML字符的方式。使用此代码的优点是还保留了标签。

function decodeHtml(html) {
    var txt = document.createElement("textarea");
    txt.innerHTML = html;
    return txt.value;
}

输入:

Entity:&nbsp;Bad attempt at XSS:<script>alert('new\nline?')</script><br>

输出:

Entity: Bad attempt at XSS:<script>alert('new\nline?')</script><br>
2020-04-25