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 相关文章推荐
关于IE浏览器以及Firefox下的javascript冒泡事件的响应层级
Oct 14 Javascript
jquery ajax 局部刷新小案例
Feb 08 Javascript
JSON.stringify转换JSON时日期时间不准确的解决方法
Aug 08 Javascript
JavaScript函数参数使用带参数名的方式赋值传入的方法
Mar 19 Javascript
jQuery实现点击按钮文字变成input框点击保存变成文字
May 09 Javascript
基于jquery实现ajax无刷新评论
Aug 19 Javascript
javascript实现一个网页加载进度loading
Jan 04 Javascript
详解JS中定时器setInterval和setTImeout的this指向问题
Jan 06 Javascript
jQuery弹出层插件popShow用法示例
Jan 23 Javascript
jQuery实现拖动效果的实例代码
Jun 25 jQuery
JavaScript事件委托原理与用法实例分析
Jun 07 Javascript
详解新手使用vue-router传参时注意事项
Jun 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与Ajax相结合实现登录验证小Demo
2016/03/16 PHP
JavaScript函数、方法、对象代码
2008/10/29 Javascript
js 将json字符串转换为json对象的方法解析
2013/11/13 Javascript
js验证输入是否为手机号码或电话号码示例
2013/12/30 Javascript
将数字转换成大写的人民币表达式的js函数
2014/09/21 Javascript
node.js中的http.response.addTrailers方法使用说明
2014/12/14 Javascript
JavaScript数据结构与算法之栈详解
2015/03/12 Javascript
在JavaScript中操作时间之setYear()方法的使用
2015/06/12 Javascript
JavaScript编写一个简易购物车功能
2016/09/17 Javascript
Bootstrap显示与隐藏简单实现代码
2017/03/06 Javascript
AngularJS集合数据遍历显示的实例
2017/12/27 Javascript
在 webpack 中使用 ECharts的实例详解
2018/02/05 Javascript
解决vue中对象属性改变视图不更新的问题
2018/02/23 Javascript
ES6的异步终极解决方案分享
2019/07/11 Javascript
vue实现浏览器全屏展示功能
2019/11/27 Javascript
vue+canvas实现拼图小游戏
2020/09/18 Javascript
Python使用dis模块把Python反编译为字节码的用法详解
2016/06/14 Python
利用TensorFlow训练简单的二分类神经网络模型的方法
2018/03/05 Python
python使用循环打印所有三位数水仙花数的实例
2018/11/13 Python
Python统计一个字符串中每个字符出现了多少次的方法【字符串转换为列表再统计】
2019/05/05 Python
Pandas 解决dataframe的一列进行向下顺移问题
2019/12/27 Python
使用Python FastAPI构建Web服务的实现
2020/06/08 Python
pycharm2020.2 配置使用的方法详解
2020/09/16 Python
python3.8动态人脸识别的实现示例
2020/09/21 Python
css3实现超炫风车特效
2014/11/12 HTML / CSS
Html5页面内使用JSON动画的实现
2019/01/29 HTML / CSS
C/C++程序员常见面试题二
2015/11/19 面试题
大学生职业生涯规划书范文
2014/01/04 职场文书
让世界充满爱演讲稿
2014/05/24 职场文书
建筑工地质量标语
2014/06/12 职场文书
分公司总经理岗位职责
2014/07/30 职场文书
歌颂党的演讲稿
2014/09/10 职场文书
关于十八大的演讲稿
2014/09/15 职场文书
放弃遗产继承公证书
2015/01/26 职场文书
2016年“七一建党节”广播稿
2015/12/18 职场文书
Java 超详细讲解设计模式之中的抽象工厂模式
2022/03/25 Java/Android