源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

JS实现HTML标签转义及反转义

  • 时间:2020-01-04 06:38 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:JS实现HTML标签转义及反转义
简单说一下业务场景,前台用户通过input输入内容,在离开焦点时,将内容在div中显示。 这时遇到一个问题,如果用户输入了html标签,则在div显示中,标签被解析。 由于是纯前端操作,不涉及后端,因此需要通过js对输入内容进行转义。 这里提供一个非常简单有效的转义方案,利用了[b]innerHTML[/b]和[b]innerText [/b] 注:火狐不支持innerText,需要使用[b]textContent [/b]属性,而IE早期版本不支持此属性,为了同时兼容IE及火狐,需要进行判断操作. 因为[b]innerText(textContent)[/b]会获取纯文本内容,忽略html节点标签,而[b]innerHTML[/b]会显示标签内容, 所以我们先将需转义的内容赋值给[b]innerText(textContent),[/b]再获取它的innerHTML属性,这时获取到的就是转义后文本内容。 代码如下:
function HTMLEncode(html) {
 var temp = document.createElement("div");
 (temp.textContent != null) ? (temp.textContent = 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> 
通过[b]测试[/b]结果,可以看到html标签及&符都被转义后保存。 同理,反转义的方法为先将转义文本赋值给[b]innerHTML[/b],然后通过[b]innerText(textContent)[/b]获取转义前的文本内容
function HTMLDecode(text) { 
 var temp = document.createElement("div"); 
 temp.innerHTML = text; 
 var output = temp.innerText || temp.textContent; 
 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> 
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持编程素材网!
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部