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 相关文章推荐
DOM 基本方法
Jul 18 Javascript
按下Enter焦点移至下一个控件的实现js代码
Dec 11 Javascript
javascript 获取网页标题代码实例
Jan 22 Javascript
javascript实时获取鼠标坐标值并显示的方法
Apr 30 Javascript
js+html5通过canvas指定开始和结束点绘制线条的方法
Jun 05 Javascript
javascript常见数据验证插件大全
Aug 03 Javascript
基于bootstrap实现广告轮播带图片和文字效果
Jul 22 Javascript
JavaScript之promise_动力节点Java学院整理
Jul 03 Javascript
Angular5中调用第三方js插件的方法
Feb 26 Javascript
微信小程序自定义可滑动日历界面
Dec 28 Javascript
vue-cli3 从搭建到优化的详细步骤
Jan 20 Javascript
react中的DOM操作实现
Jun 30 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伪造referer突破网盘禁止外连的代码
2008/06/15 PHP
Android ProgressBar进度条和ProgressDialog进度框的展示DEMO
2013/06/19 PHP
ThinkPHP调用百度翻译类实现在线翻译
2014/06/26 PHP
php中$_GET与$_POST过滤sql注入的方法
2014/11/03 PHP
PHP发送AT指令实例代码
2016/05/26 PHP
jquery dialog键盘事件代码
2010/08/01 Javascript
js监听输入框值的即时变化onpropertychange、oninput
2011/07/13 Javascript
Javascript学习笔记之函数篇(六) : 作用域与命名空间
2014/11/23 Javascript
简介可以自动完成UI的AngularJS工具angular-smarty
2015/06/23 Javascript
jQuery 限制输入字符串长度
2016/06/20 Javascript
jQuery的图片轮播插件PgwSlideshow使用详解
2016/08/11 Javascript
JQuery中解决重复动画的方法
2016/10/17 Javascript
JS短信验证码倒计时功能的实现(没有验证码,只有倒计时)
2016/10/27 Javascript
AngularJS控制器之间的通信方式详解
2016/11/03 Javascript
Javascript之面向对象--方法
2016/12/02 Javascript
jQuery插件echarts实现的循环生成图效果示例【附demo源码下载】
2017/03/04 Javascript
使用prop解决一个checkbox选中后再次选中失效的问题
2017/07/05 Javascript
vue异步axios获取的数据渲染到页面的方法
2018/08/09 Javascript
通过Nodejs搭建网站简单实现注册登录流程
2019/06/14 NodeJs
Nodejs中使用puppeteer控制浏览器中视频播放功能
2019/08/26 NodeJs
vue接通后端api以及部署到服务器操作
2020/08/13 Javascript
python-docx修改已存在的Word文档的表格的字体格式方法
2018/05/08 Python
PyQt5实现五子棋游戏(人机对弈)
2020/03/24 Python
django 信号调度机制详解
2019/07/19 Python
Spring实战之使用util:命名空间简化配置操作示例
2019/12/09 Python
使用Keras预训练模型ResNet50进行图像分类方式
2020/05/23 Python
Python 如何创建一个简单的REST接口
2020/07/30 Python
static关键字的用法
2013/10/07 面试题
自我评价优秀范文分享
2013/11/30 职场文书
专科毕业生自我鉴定
2013/12/01 职场文书
个人求职信范文分享
2014/01/31 职场文书
国际商务专业求职信
2014/07/15 职场文书
会议通知范文
2015/04/15 职场文书
Java如何实现通过键盘输入一个数组
2022/02/15 Java/Android
一文弄懂MySQL索引创建原则
2022/02/28 MySQL
python和C/C++混合编程之使用ctypes调用 C/C++的dll
2022/04/29 Python