当前位置: 首页 > news >正文

JS及JQuery对Html内容编码,Html转义

 1利用jquery

 

/** JQuery Html Encoding、Decoding
* 原理是利用JQuery自带的html()和text()函数可以转义Html字符
* 虚拟一个Div通过赋值和取值来得到想要的Html编码或者解码
*/
<script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script>
<script type="text/javascript">
//Html编码获取Html转义实体
function htmlEncode(value){
  return $('<div/>').text(value).html();
}
//Html解码获取Html实体
function htmlDecode(value){
  return $('<div/>').html(value).text();
}
</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, "&amp;");
        s = s.replace(/</g, "&lt;");
        s = s.replace(/>/g, "&gt;");
        s = s.replace(/ /g, "&nbsp;");
        s = s.replace(/\'/g, "&#39;");
        s = s.replace(/\"/g, "&quot;");
        return s;
    },
    /*4.用正则表达式实现html解码*/
    htmlDecodeByRegExp: function (str) {
        var s = "";
        if (str.length == 0) return "";
        s = str.replace(/&amp;/g, "&");
        s = s.replace(/&lt;/g, "<");
        s = s.replace(/&gt;/g, ">");
        s = s.replace(/&nbsp;/g, " ");
        s = s.replace(/&#39;/g, "\'");
        s = s.replace(/&quot;/g, "\"");
        return s;
    }
};

 htmlUitl.js 下载

欢迎大家加入QQ 交流群15129679

相关文章:

  • 0520三级联动
  • 类的继承
  • 【译】Activitys, Threads和 内存泄露
  • Android 中文 API 文档 (45) —— AbsoluteLayout.LayoutParams
  • [Angularjs]ng-select和ng-options
  • eclipse实现JavaWeb应用增量打包
  • AngularJS之Filter(二)
  • nginx 负载服务器优化
  • 【SSH网上商城项目实战14】商城首页UI的设计
  • eclipse+python+selenium+mysqldb环境搭建
  • 取模和与运算的优化
  • STORM_0007_Multi-Lang protocol of Storm/多语言协议的翻译
  • Jquery 中map()函数的用法
  • 大公司都有哪些开源项目~~~简化版
  • Java 网络IO编程总结(BIO、NIO、AIO均含完整实例代码)
  • (十五)java多线程之并发集合ArrayBlockingQueue
  • [ 一起学React系列 -- 8 ] React中的文件上传
  • Android 初级面试者拾遗(前台界面篇)之 Activity 和 Fragment
  • JavaScript 无符号位移运算符 三个大于号 的使用方法
  • leetcode386. Lexicographical Numbers
  • PAT A1050
  • python学习笔记 - ThreadLocal
  • Redash本地开发环境搭建
  • SQLServer插入数据
  • vue 配置sass、scss全局变量
  • 从setTimeout-setInterval看JS线程
  • 飞驰在Mesos的涡轮引擎上
  • 观察者模式实现非直接耦合
  • 前端性能优化--懒加载和预加载
  • 入门级的git使用指北
  • 腾讯大梁:DevOps最后一棒,有效构建海量运营的持续反馈能力
  • 详解移动APP与web APP的区别
  • 用Python写一份独特的元宵节祝福
  • ​RecSys 2022 | 面向人岗匹配的双向选择偏好建模
  • #我与Java虚拟机的故事#连载07:我放弃了对JVM的进一步学习
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • (173)FPGA约束:单周期时序分析或默认时序分析
  • (C++17) optional的使用
  • (LNMP) How To Install Linux, nginx, MySQL, PHP
  • (二)WCF的Binding模型
  • (论文阅读22/100)Learning a Deep Compact Image Representation for Visual Tracking
  • ***linux下安装xampp,XAMPP目录结构(阿里云安装xampp)
  • .NET Core 成都线下面基会拉开序幕
  • .net开发时的诡异问题,button的onclick事件无效
  • .NET开源项目介绍及资源推荐:数据持久层 (微软MVP写作)
  • .NET中winform传递参数至Url并获得返回值或文件
  • .secret勒索病毒数据恢复|金蝶、用友、管家婆、OA、速达、ERP等软件数据库恢复
  • @Autowired @Resource @Qualifier的区别
  • @FeignClient注解,fallback和fallbackFactory
  • [2021ICPC济南 L] Strange Series (Bell 数 多项式exp)
  • [C/C++]_[初级]_[关于编译时出现有符号-无符号不匹配的警告-sizeof使用注意事项]
  • [ChromeApp]指南!让你的谷歌浏览器好用十倍!
  • [codevs] 1029 遍历问题
  • [CQOI 2011]动态逆序对
  • [CTF]php is_numeric绕过