从输入字段读取属性时HTML编码丢失

我正在使用JavaScript从隐藏字段中提取一个值,并将其显示在文本框中。隐藏字段中的值已编码

比如说,

<输入id='hiddenId'type='hidden'值='chalk&奶酪“/>

卷入

<输入type='text'值='chalk&奶酪“/>

通过一些jQuery从隐藏字段中获取值(此时我丢失了编码):

$('hiddenId').attr('value'))

问题是当我读粉笔时;amp;cheese从隐藏字段中,JavaScript似乎丢失了编码。我不希望值为粉笔&奶酪。我想要文字amp将被保留

是否有JavaScript库或jQuery方法可以对字符串进行HTML编码

EDIT:这个答案很久以前就发布了,而htmlDecode函数引入了XSS漏洞。它已被修改,将临时元素从div更改为textarea以减少XSS的机会。但是现在,我鼓励您使用其他anwswer中建议的DOMParser API


我使用以下功能:

函数htmlEncode(值){
//创建内存元素,设置其内部文本(自动编码)
//然后把编码后的内容取出来。DOM中不存在该元素。
返回$('<textarea/>').text(value.html();
}
函数htmlDecode(值){
返回$('<textarea/>').html(value.text();
}

基本上,textarea元素是在内存中创建的,但它从未附加到文档中

htmlEncode函数中,我设置元素的innerText,并检索编码的innerHTML;在htmlDecode函数中,我设置元素的innerHTML值,并检索innerText

在这里检查一个正在运行的示例

发表评论