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 相关文章推荐
Prototype中dom对象方法汇总
Sep 17 Javascript
为指定元素增加样式的js代码
Dec 09 Javascript
完美解决IE低版本不支持call与apply的问题
Dec 05 Javascript
Node.js巧妙实现Web应用代码热更新
Oct 22 Javascript
JS组件Bootstrap按钮组与下拉按钮详解
May 10 Javascript
JavaScript根据CSS的Media Queries来判断浏览设备的方法
May 10 Javascript
bootstrapValidator.min.js表单验证插件
Feb 09 Javascript
AngularJs实现聊天列表实时刷新功能
Jun 15 Javascript
基于Cookie常用操作以及属性介绍
Sep 07 Javascript
详解JavaScript中typeof与instanceof用法
Oct 24 Javascript
原生js实现贪食蛇小游戏的思路详解
Nov 26 Javascript
简单聊聊TypeScript只读修饰符
Apr 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 self与$this的详解
2013/06/08 PHP
php读取der格式证书乱码解决方法
2015/06/22 PHP
php+redis实现商城秒杀功能
2020/11/19 PHP
php微信公众号开发之欢迎老朋友
2018/10/20 PHP
PHP crypt()函数的用法讲解
2019/02/15 PHP
通用JS事件写法实现代码
2009/01/07 Javascript
Prototype RegExp对象 学习
2009/07/19 Javascript
Javascript 闭包引起的IE内存泄露分析
2012/05/23 Javascript
js写一个字符串转成驼峰的实例
2013/06/21 Javascript
简介JavaScript中setUTCSeconds()方法的使用
2015/06/12 Javascript
JavaScript中的闭包
2016/02/24 Javascript
ReactNative页面跳转实例代码
2016/09/27 Javascript
js实现图片懒加载效果
2017/07/17 Javascript
基于jquery实现五星好评
2017/11/18 jQuery
如何去除vue项目中的#及其ie9兼容性
2018/01/11 Javascript
使用elementUI实现将图片上传到本地的示例
2018/09/04 Javascript
jQuery点击页面其他部分隐藏下拉菜单功能
2018/11/27 jQuery
解决layui使用layui-icon出现默认图标的问题
2019/09/11 Javascript
微信小程序自定义顶部组件customHeader的示例代码
2020/06/03 Javascript
Vue中nprogress页面加载进度条的方法实现
2020/11/13 Javascript
[46:04]Liquid vs VP Supermajor决赛 BO 第四场 6.10
2018/07/05 DOTA
在Python的Flask框架中实现单元测试的教程
2015/04/20 Python
Python排序搜索基本算法之希尔排序实例分析
2017/12/09 Python
python3实现SMTP发送邮件详细教程
2018/06/19 Python
Python操作列表常用方法实例小结【创建、遍历、统计、切片等】
2019/10/25 Python
关于ZeroMQ 三种模式python3实现方式
2019/12/23 Python
python中四舍五入的正确打开方式
2021/01/18 Python
CSS3 开发工具收集
2010/04/17 HTML / CSS
html5+css3实现一款注册表单实例
2013/04/17 HTML / CSS
JACK & JONES瑞典官方网站:杰克琼斯欧式风格男装
2017/12/23 全球购物
实习生的自我鉴定范文欣赏
2013/11/20 职场文书
法学院方阵解说词
2014/01/29 职场文书
电台实习生求职信
2014/02/25 职场文书
服务质量承诺书
2014/03/27 职场文书
商务日语专业的自荐信
2014/05/23 职场文书
解析python中的jsonpath 提取器
2022/01/18 Python