javascript对HTML字符转义与反转义


Posted in Javascript onDecember 13, 2018

1.背景:在项目中,经常遇到一些字符需要进行转义后才能显示到界面上,如“&”,在界面中显示的是“&”,在html中书写“&”,显示在界面的中的依然是“&”。

这时候,就需要进行转义

 javascript对HTML字符转义与反转义

2.解决方案

<script>

var HtmlUtil = {

 /*1.用浏览器内部转换器实现html转码*/

 htmlEncode:function (html){

 //1.首先动态创建一个容器标签元素,如DIV

 var temp = document.createElement ("div");

 //2.然后将要转换的字符串设置为这个元素的innerText(ie支持)或者textContent(火狐,google支持)

 (temp.textContent != undefined ) ? (temp.textContent = html) : (temp.innerText = html);

 //3.最后返回这个元素的innerHTML,即得到经过HTML编码转换的字符串了

 var output = temp.innerHTML;

 temp = null;

 return output;

 },

 /*2.用浏览器内部转换器实现html解码*/

 htmlDecode:function (text){

 //1.首先动态创建一个容器标签元素,如DIV

 var temp = document.createElement("div");

 //2.然后将要转换的字符串设置为这个元素的innerHTML(ie,火狐,google都支持)

 temp.innerHTML = text;

 //3.最后返回这个元素的innerText(ie支持)或者textContent(火狐,google支持),即得到经过HTML解码的字符串了。

 var output = temp.innerText || temp.textContent;

 temp = null;

 return output;

 },

 /*3.用正则表达式实现html转码*/

 htmlEncodeByRegExp:function (str){ 

 var s = "";

 if(str.length == 0) return "";

 s = str.replace(/&/g,"&");

 s = s.replace(/</g,"<");

 s = s.replace(/>/g,">");

 s = s.replace(/ /g," ");

 s = s.replace(/\'/g,"'");

 s = s.replace(/\"/g,""");

 return s; 

 },

 /*4.用正则表达式实现html解码*/

 htmlDecodeByRegExp:function (str){ 

 var s = "";

 if(str.length == 0) return "";

 s = str.replace(/&/g,"&");

 s = s.replace(/</g,"<");

 s = s.replace(/>/g,">");

 s = s.replace(/ /g," ");

 s = s.replace(/'/g,"\'");

 s = s.replace(/"/g,"\"");

 return s; 

 }

 };

</script>

使用方法:HtmlUtil.htmlDecodeByRegExp("&")

PS:使用正则

使用正则转码:

var value = document.getElementById('input').value.trim();
 //对用户输入进行转义
 value = value.replace(/&/g,"&");
 value = value.replace(/</g,"<");
 value = value.replace(/>/g,">");
 value = value.replace(/ /g," ");
 value = value.replace(/"/g,'"');

使用正则解码:

var value = e.target.innerText;
 // value = decodeURIComponent(value);
 value = value.replace(/&/g,"&");
 value = value.replace(/</g,"<");
 value = value.replace(/>/g,">");
 value = value.replace(/ /g," ");
 value = value.replace(/"/g,"'");

下面是其他网友的补充

在编写html时,经常需要转义,才能正常显示在页面上。

并且,还可以防止xss。

解决方案:

一, 使用正则:

使用正则转码:

var value = document.getElementById('input').value.trim();
 //对用户输入进行转义
 value = value.replace(/&/g,"&");
 value = value.replace(/</g,"<");
 value = value.replace(/>/g,">");
 value = value.replace(/ /g," ");
 value = value.replace(/"/g,'"');

使用正则解码:

var value = e.target.innerText;
// value = decodeURIComponent(value);
 value = value.replace(/&/g,"&");
 value = value.replace(/</g,"<");
 value = value.replace(/>/g,">");
 value = value.replace(/ /g," ");
 value = value.replace(/"/g,"'");

由于编辑器的编码问题,其实就是

将<用<替换,>替换为>,空格替换为 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JS中showModalDialog 的使用解析
Apr 17 Javascript
javascript 获取元素样式必杀技
May 04 Javascript
jquery实现多屏多图焦点图切换特效的方法
May 04 Javascript
详细解读Jquery各Ajax函数($.get(),$.post(),$.ajax(),$.getJSON())
Aug 15 Javascript
JavaScript获取服务器端时间的方法
Nov 29 Javascript
js事件冒泡与事件捕获详解
Feb 20 Javascript
微信小程序中的swiper组件详解
Apr 14 Javascript
微信小程序canvas写字板效果及实例
Jun 15 Javascript
微信小程序实现表单校验功能
Mar 30 Javascript
React中使用外部样式的3种方式(小结)
May 28 Javascript
解决vue语法会有延迟加载显现{{xxx}}的问题
Nov 14 Javascript
JS实现音乐钢琴特效
Jan 06 Javascript
Web安全之XSS攻击与防御小结
Dec 13 #Javascript
JavaScript实现邮箱后缀提示功能的示例代码
Dec 13 #Javascript
深入理解js A*寻路算法原理与具体实现过程
Dec 13 #Javascript
Vue.js上传图片到阿里云OSS存储的方法示例
Dec 13 #Javascript
JS/HTML5游戏常用算法之路径搜索算法 随机迷宫算法详解【普里姆算法】
Dec 13 #Javascript
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【凹多边形的分离轴检测算法】
Dec 13 #Javascript
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【矩形情况】
Dec 13 #Javascript
You might like
php 网页播放器用来播放在线视频的代码(自动判断并选择视频文件类型)
2010/06/03 PHP
PHP判断手机是IOS还是Android
2015/12/09 PHP
PHP入门教程之正则表达式基本用法实例详解(正则匹配,搜索,分割等)
2016/09/11 PHP
php版阿里大于(阿里大鱼)短信发送实例详解
2016/11/30 PHP
php实现的pdo公共类定义与用法示例
2017/07/19 PHP
javascript document.execCommand() 常用解析
2009/12/14 Javascript
Javascript面向对象设计一 工厂模式
2011/12/20 Javascript
JS 实现图片直接下载示例代码
2013/07/22 Javascript
JQuery的自定义事件代码,触发,绑定简单实例
2013/08/01 Javascript
js判断两个日期是否相等的方法
2013/09/10 Javascript
jQuery大于号(&gt;)选择器的作用解释
2015/01/13 Javascript
Javascript实现Web颜色值转换
2015/02/05 Javascript
JS实现鼠标滑过链接改变网页背景颜色的方法
2015/10/20 Javascript
Es6 写的文件import 起来解决方案详解
2016/12/13 Javascript
javascript图片预览和上传(兼容IE)
2017/03/15 Javascript
轻松解决JavaScript定时器越走越快的问题
2019/05/13 Javascript
Python类的多重继承问题深入分析
2014/11/09 Python
Python基础中所出现的异常报错总结
2016/11/19 Python
python中requests使用代理proxies方法介绍
2017/10/25 Python
Python判断两个list是否是父子集关系的实例
2018/05/04 Python
Django利用cookie保存用户登录信息的简单实现方法
2019/05/27 Python
使用python实现画AR模型时序图
2019/11/20 Python
Python while循环使用else语句代码实例
2020/02/07 Python
CSS3中伪元素::before和::after的用法示例
2017/09/18 HTML / CSS
html5中 media(播放器)的api使用指南
2014/12/26 HTML / CSS
HTML5 3D旋转相册的实现示例
2019/12/03 HTML / CSS
TripAdvisor土耳其网站:全球知名旅行社区,真实旅客评论
2017/04/17 全球购物
北美最大的零售退货翻新商:VIP Outlet
2019/11/21 全球购物
说一下Linux下有关用户和组管理的命令
2014/08/18 面试题
系统管理员的职责包括那些?管理的对象是什么?
2013/01/18 面试题
如何用Python来进行查询和替换一个文本字符串
2014/01/02 面试题
高等教育专业自荐信范文
2014/03/26 职场文书
中学生运动会新闻稿
2014/09/24 职场文书
初中军训感想
2015/08/07 职场文书
企业法律事务工作总结
2015/08/11 职场文书
2016年优秀团支部事迹材料
2016/02/26 职场文书