我正在使用一个Web服务,它会给我类似以下的值:
var text = "<<<&&&";
我需要使用JavaScript将其打印成“<<<&&&”。但是有个问题:我不能使用innerHTML(实际上,我要将这些值发送到一个创建文本节点的原型库中,以便它不会解码我的原始HTML字符串)。如果无法编辑库文件,您将如何取消转义此HTML?我需要了解这里的真正问题,取消转义此类型的字符串的风险是什么?innerHTML 是如何做到的?还有哪些其他选项可用?
注:这里的问题不在于使用JavaScript正常的escape/unescape,甚至不在于使用jQuery/Prototype实现它们,而在于使用任何一种方式可能带来的安全问题...也就是“他们告诉我使用它们非常不安全”的问题。如果想要理解innerHTML是如何解码这个奇怪的字符串,请查看这个简单的示例:<html>
<head>
<title>createTextNode example</title>
<script type="text/javascript">
var text = "<<<&&&";
function addTextNode(){
var newtext = document.createTextNode(text);
var para = document.getElementById("p1");
para.appendChild(newtext);
}
function innerHTMLTest(){
var para = document.getElementById("p1");
para.innerHTML = text;
}
</script>
</head>
<body>
<div style="border: 1px solid red">
<p id="p1">First line of paragraph.<br /></p>
</div><br />
<button onclick="addTextNode();">add another textNode.</button>
<button onclick="innerHTMLTest();">test innerHTML.</button>
</body>
</html>