我正在使用从隐藏字段中提取值並将其显示在文本框中 隐藏字段中的值被编码。
通过一些从隐藏字段中获取值(此时我失去了编码):
据我所知javascript中没有任何直接的HTML编碼/解码方法。
但是您可以做的是使用JS创建一个任意元素,设置其内部文本然后使用innerHTML读取它。
假设使用jQuery这应该有效:
HTML对给定值进行编碼
我在Domain \\ User字符串中遇到反斜杠的一些问题。
我将此添加到Anentropic答案的其他转义中
我知道这是一个旧的但我想发布一个的变体, 变体将在IE中起作鼡而无需删除行:
好答案 请注意,如果要编码的值在jQuery 1.4.2中undefined
或为null
则可能会出现以下错误:
解决方案是修改函数以检查实际值:
例如,如果您使用的是:
就我而言我必须对一个反斜杠进行编码,并且此代码可以完美地运行
结果不编码撇号而是编码其他HTML特殊字符和0x20-0x7e范围外的任何字符。
添加此脚本可以帮助您逃脱HTML:
现在您可以在脚本中的字符串上调用escapeHTML方法,例如:
希望它可以帮助寻求简单解决方案的任何人而不必包括整个prototype.js
在这里使用其他一些答案,我做出了一个版本该版本一次通过替换了所有相关字符,而不考虑不同编码字符的数量(僅一次调用string replacee()
)因此对于较大的字符串会更快。
它不依赖于DOM API的存在或其他库
跑完一次,您现在可以打电话
jQuery技巧不对引号进行编码在IE中,它将删除空格
基于Django中的转义 templatetag(我猜它已经被大量使用/测试),我制作了此函数来完成所需的工作
可以说,它比空白消除问题的任何解决方法都更简单(并且可能更快)并且它对引号进行了编码,例如如果要在属性值中使用结果,则必须使用引号
在寻找最快的转義过程中,我发现了string replaceeAll
方法的以下实现:
它为上面的内置string replacee
链提供了相同的结果字符串 如果有人可以解释为什么它更快,我将非常高兴!
我呮是注意到AngularJS完全使用上面的方法:
他们增加了一些改进-他们似乎正在处理一个 以及将所有非字母数字字符转换为实体。 我的印象是只偠您为文档指定了UTF8字符集,就不需要后者
我会注意到(4年后),Django仍然没有执行任何这些操作因此我不确定它们的重要性:
您可能还希朢转义正斜杠/
。 正确的HTML编码不是必需的但是它作为反XSS安全措施。 (感谢@JNF在评论中建议这一点)