JS实现HTML标签转义及反转义
简单说⼀下业务场景,前台⽤户通过input输⼊内容,在离开焦点时,将内容在div中显⽰。
这时遇到⼀个问题,如果⽤户输⼊了html标签,则在div显⽰中,标签被解析。
由于是纯前端操作,不涉及后端,因此需要通过js对输⼊内容进⾏转义。
这⾥提供⼀个⾮常简单有效的转义⽅案,利⽤了innerHTML和innerText
注:⽕狐不⽀持innerText,需要使⽤ textContent 属性,⽽IE早期版本不⽀持此属性,为了同时兼容IE及⽕狐,需要进⾏判断操作.
因为innerText(textContent)会获取纯⽂本内容,忽略html节点标签,⽽innerHTML会显⽰标签内容,
所以我们先将需转义的内容赋值给innerText(textContent),再获取它的innerHTML属性,这时获取到的就是转义后⽂本内容。
代码如下:
function HTMLEncode(html) {
var temp = ateElement("div");
(Content != null) ? (Content = html) : (temp.innerText = html);
var output = temp.innerHTML;
temp = null;
return output;
}
var tagText = "<p><b>123&456</b></p>";
console.log(HTMLEncode(tagText));//<p><b>123&456</b></p>
通过测试结果,可以看到html标签及&符都被转义后保存。
同理,反转义的⽅法为先将转义⽂本赋值给innerHTML,然后通过innerText(textContent)获取转义前的⽂本内容
function HTMLDecode(text) {
var temp = ateElement("div");
temp.innerHTML = text;
var output = temp.innerText || Content;
temp = null;
return output;
}
var tagText = "<p><b>123&456</b></p>";
var encodeText = HTMLEncode(tagText);
console.log(encodeText);//<p><b>123&456</b></p>
console.log(HTMLDecode(encodeText)); //<p><b>123&456</b></p>
编码反编码核⼼函数
function html_encode(str)
{
var s = "";
if (str.length == 0) return "";
s = place(/&/g, "&");
s = s.replace(/</g, "<");
s = s.replace(/>/g, ">");
s = s.replace(/ /g, " ");
s = s.replace(/\'/g, "'");
s = s.replace(/\"/g, """);
s = s.replace(/\n/g, "<br/>");
return s;
}
function html_decode(str)
{
var s = "";
if (str.length == 0) return "";
s = place(/&/g, "&");
s = s.replace(/</g, "<");
s = s.replace(/>/g, ">");
s = s.replace(/ /g, " ");
s = s.replace(/'/g, "\'");
s = s.replace(/"/g, "\"");
s = s.replace(/<br\/>/g, "\n");
return s;
}
console.log(html_decode('<div>123</div>'));
console.log(html_encode(html_decode('<div>123</div>')));
实例
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>test</title>
<script src="/jquery/1.10.2/jquery.min.js"></script>
<script type="text/javascript">
function html_encode(str)
{
var s = "";
if (str.length == 0) return "";
s = place(/&/g, "&");
s = s.replace(/</g, "<");
s = s.replace(/>/g, ">");
s = s.replace(/ /g, " ");
s = s.replace(/\'/g, "'");
html document是什么
s = s.replace(/\"/g, """);
s = s.replace(/\n/g, "<br/>");
return s;
}
function html_decode(str)
{
var s = "";
if (str.length == 0) return "";
s = place(/&/g, "&");
s = s.replace(/</g, "<");
s = s.replace(/>/g, ">");
s = s.replace(/ /g, " ");
s = s.replace(/'/g, "\'");
s = s.replace(/"/g, "\"");
s = s.replace(/<br\/>/g, "\n");
return s;
}
console.log(html_decode('<div>123</div>'));
console.log(html_encode(html_decode('<div>123</div>')));
</script>
</head>
<body>
</body>
</html>
以上就是本⽂的全部内容,希望本⽂的内容对⼤家的学习或者⼯作能带来⼀定的帮助,同时也希望多多⽀持!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。