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 相关文章推荐
JQuery+JS实现仿百度搜索结果中关键字变色效果
Aug 02 Javascript
jQuery固定浮动侧边栏实现思路及代码
Sep 28 Javascript
js实现进度条的方法
Feb 13 Javascript
jquery实现图片左右切换的方法
May 07 Javascript
Javascript实现检测客户端类型代码封包
Dec 03 Javascript
JS Canvas定时器模拟动态加载动画
Sep 17 Javascript
浅谈AngularJs指令之scope属性详解
Oct 24 Javascript
JS操作input标签属性checkbox全选的实现代码
Mar 02 Javascript
react-redux中connect的装饰器用法@connect详解
Jan 13 Javascript
新手简单了解vue
May 29 Javascript
JavaScript实现文件下载并重命名代码实例
Dec 12 Javascript
简单谈谈offsetleft、offsetTop和offsetParent
Dec 04 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读取javascript设置的cookies的代码
2010/04/12 PHP
万能的php分页类
2017/07/06 PHP
PHP http请求超时问题解决方案
2020/11/13 PHP
ajax的hide隐藏问题解决方法
2012/12/11 Javascript
JavaScript将相对地址转换为绝对地址示例代码
2013/07/19 Javascript
jquery获取radio值(单选组radio)
2014/10/16 Javascript
JavaScript实现获取dom中class的方法
2015/02/09 Javascript
Flash图片上传组件 swfupload使用指南
2015/03/14 Javascript
js使用DOM操作实现简单留言板的方法
2015/04/10 Javascript
jQuery基本过滤选择器用法示例
2016/09/09 Javascript
微信小程序 视图层(xx.xml)和逻辑层(xx.js)详细介绍
2016/10/13 Javascript
原生JavaScript实现AJAX、JSONP
2017/02/07 Javascript
使用Vue动态生成form表单的实例代码
2018/04/26 Javascript
jquery简单实现纵向的无缝滚动代码实例
2019/04/01 jQuery
代码块高亮可复制显示js插件highlight.js+clipboard.js整合
2021/02/15 Javascript
[00:47]DOTA2荣耀之路6:玩不了啦!
2018/05/30 DOTA
python标准日志模块logging的使用方法
2013/11/01 Python
浅析Python中的join()方法的使用
2015/05/19 Python
Python 类的继承实例详解
2017/03/25 Python
Python pymongo模块用法示例
2018/03/31 Python
python学习基础之循环import及import过程
2018/04/22 Python
Python list列表中删除多个重复元素操作示例
2019/02/27 Python
十行代码使用Python写一个USB病毒
2019/06/21 Python
Django REST Framework之频率限制的使用
2019/09/29 Python
Python内置类型性能分析过程实例
2020/01/29 Python
详解用Python调用百度地图正/逆地理编码API
2020/07/02 Python
python基于exchange函数发送邮件过程详解
2020/11/06 Python
5分钟快速掌握Python定时任务框架的实现
2021/01/26 Python
结合CSS3的布局新特征谈谈常见布局方法
2016/01/22 HTML / CSS
ORACLE第二个十问
2013/12/14 面试题
美术专业学生个人自我评价
2013/09/19 职场文书
关于逃课的检讨书
2014/01/23 职场文书
临床专业自荐信
2014/06/22 职场文书
2015年精神文明建设工作总结
2015/04/21 职场文书
python中pandas对多列进行分组统计的实现
2021/06/18 Python
spring注解 @PropertySource配置数据源全流程
2022/03/25 Java/Android