这篇文章主要介绍了javascript对HTML字符转义与反转义,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

1.背景:在项目中,经常遇到一些字符需要进行转义后才能显示到界面上,如“&”,在界面中显示的是“&”,在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,"'");

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持爱安网。

最新资讯
亚马逊宣布允许汽车厂商基于Alexa定制车内语音助手

亚马逊宣布允许汽车厂

据报道,亚马逊今日推出了一项新服务“Alexa Custom Ass
美媒:社交媒体Parler帮助FBI确认了至少一名与国会骚乱有关的人

美媒:社交媒体Parler帮

据美国《商业内幕》网站14日消息,社交媒体平台Parler正
腾讯音乐盘初涨超3% 此前宣布27亿元收购懒人听书100%股权

腾讯音乐盘初涨超3%

此前腾讯音乐宣布27亿元收购懒人听书100%股权,后者将保
滴滴出行:因违反防疫规定滴滴和花小猪平台共79737人被封

滴滴出行:因违反防疫规

截至1月15日,滴滴平台共计49480名司机和乘客因未按要求
游戏公司Playtika IPO定价27美元/股,估值达111亿美元

游戏公司Playtika IPO

由巨人网络通过参股子公司间接持股的海外游戏公司Play
网传一特斯拉Model 3撞毁医院岗亭 据称有一人被撞倒

网传一特斯拉Model 3

1月15日,据媒体报道,一辆特斯拉Model 3在西安市北方医院
最新文章
详解Vue的ref特性的使用

详解Vue的ref特性的使

这篇文章主要介绍了详解Vue的ref特性的使用,文中通过
vue学习笔记之slot插槽基本用法实例分析

vue学习笔记之slot插

这篇文章主要介绍了vue学习笔记之slot插槽基本用法,结
vue跳转方式(打开新页面)及传参操作示例

vue跳转方式(打开新页

这篇文章主要介绍了vue跳转方式(打开新页面)及传参操作,
vue学习笔记之过滤器的基本使用方法实例分析

vue学习笔记之过滤器

这篇文章主要介绍了vue学习笔记之过滤器的基本使用方
js获取本日、本周、本月的时间代码

js获取本日、本周、本

本篇文章给大家分享的内容是利用js如何获取本日、本周
node crawler如何添加promise支持

node crawler如何添加

这篇文章主要介绍了node crawler如何添加promise支持,