我正在使用JavaScript从隐藏字段中提取一个值,并将其显示在文本框中。隐藏字段中的值已编码
比如说,
<;输入id='hiddenId'type='hidden'值='chalk&;amp;奶酪“/>;
卷入
<;输入type='text'值='chalk&;amp;奶酪“/>;
通过一些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
在这里检查一个正在运行的示例