javascript另类方法实现htmlencode()与htmldecode()函数实例分析


Posted in Javascript onNovember 17, 2016

本文实例讲述了javascript另类方法实现htmlencode()与htmldecode()函数。分享给大家供大家参考,具体如下:

最常见的做法是采用正则表达式替换的方法,将特殊字符如 < > & 等进行替换,htmlencode的时候这样替换还比较容易,但发过来htmldecode的时候就不一定好用了,因为需要反转的情况很多,出了常见的<>&以外,还有 ©"®等数十个字符实体,还有AB中文或者中文之类以字符的Unicode编码的十进制或16进制表示的转义,难以全部列举,用逐个替换不仅代码冗长而且低效,还容易漏掉某些字符。

代码如下:

function htmlencode(s){
  var div = document.createElement('div');
  div.appendChild(document.createTextNode(s));
  return div.innerHTML;
}
function htmldecode(s){
  var div = document.createElement('div');
  div.innerHTML = s;
  return div.innerText || div.textContent;
}

相当简洁!

编码原理就是创建TextNode节点,附加到容器中,再取容器的innerHTML.

解码原理是将字符串赋?容器的innerHTML,再取innerText或textContent.

测试一下:

//测试
document.onclick = function (){
  //<p> & </p>
  alert(htmlencode('<p> & </p>'));
  //<p> & © ABC 中文 中文 </p>
  alert(htmldecode('<p> & © ABC 中文 中文 </p>'));
}

效果不错。

htmldecode对入参有要求,如果入参不是合法的encode后的结果,可能无法得到预期结果。

我在google搜索,在cnblogs找到一篇和我一样思路的,原来已经有别人这样想了=||=,不过他的htmldecode代码有错误。

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
Prototype Class对象学习
Jul 19 Javascript
浅析Javascript ES6新增值比较函数Object.is
Aug 24 Javascript
Bootstrap 3的box-sizing样式导致UEditor控件的图片无法正常缩放的解决方案
Sep 15 Javascript
浅析如何利用JavaScript进行语音识别
Oct 27 Javascript
jquery网页加载进度条的实现
Jun 01 jQuery
Vue修改mint-ui默认样式的方法
Feb 03 Javascript
vue中element-ui表格缩略图悬浮放大功能的实例代码
Jun 26 Javascript
Vue中使用 setTimeout() setInterval()函数的问题
Sep 13 Javascript
JS返回页面时自动回滚到历史浏览位置
Sep 26 Javascript
微信小程序列表中item左滑删除功能
Nov 07 Javascript
Vue基于iview table展示图片实现点击放大
Aug 05 Javascript
vue-以文件流-blob-的形式-下载-导出文件操作
Aug 07 Javascript
JavaScript实现解析INI文件内容的方法
Nov 17 #Javascript
详解AngularJS中的表单验证(推荐)
Nov 17 #Javascript
JavaScript实现清空(重置)文件类型INPUT元素值的方法
Nov 17 #Javascript
用Vue.js实现监听属性的变化
Nov 17 #Javascript
JS实现类似51job上的地区选择效果示例
Nov 17 #Javascript
JS实现的适合做faq或menu滑动效果示例
Nov 17 #Javascript
JavaScript中定时控制Throttle、Debounce和Immediate详解
Nov 17 #Javascript
You might like
php下实现在指定目录搜索指定类型文件的函数
2008/10/03 PHP
PHP解析html类库simple_html_dom的转码bug
2014/05/22 PHP
php删除txt文件指定行及按行读取txt文档数据的方法
2017/01/30 PHP
让任务管理器中的CPU跳舞的js代码
2008/11/01 Javascript
基于jQuery试卷自动排版系统
2010/07/18 Javascript
jQuery获取css z-index在各种浏览器中的返回值
2010/09/15 Javascript
js获取某元素的class里面的css属性值代码
2014/01/16 Javascript
当前流行的JavaScript代码风格指南
2014/09/10 Javascript
.NET微信公众号开发之创建自定义菜单
2015/07/16 Javascript
jquery+CSS3模拟Path2.0动画菜单效果代码
2015/08/31 Javascript
基于JS实现无缝滚动思路及代码分享
2016/06/07 Javascript
基于Vue.js实现简单搜索框
2020/03/26 Javascript
浅谈vue-lazyload实现的详细过程
2017/08/22 Javascript
浅析Javascript中双等号(==)隐性转换机制
2017/10/27 Javascript
jQuery实现列表的增加和删除功能
2018/06/14 jQuery
vue中beforeRouteLeave实现页面回退不刷新的示例代码
2019/11/01 Javascript
JS判断数组是否包含某元素实现方法汇总
2020/06/24 Javascript
JavaScript代码简化技巧实例解析
2020/09/09 Javascript
删除目录下相同文件的python代码(逐级优化)
2012/05/25 Python
python海龟绘图实例教程
2014/07/24 Python
Python的Flask开发框架简单上手笔记
2015/11/16 Python
基于Python获取城市近7天天气预报
2019/11/26 Python
Python 爬虫的原理
2020/07/30 Python
pycharm使用技巧之自动调整代码格式总结
2020/11/04 Python
HTML5 Canvas 破碎重组的视频特效的示例代码
2019/09/24 HTML / CSS
bareMinerals官网:矿物质化妆品和护肤品
2018/02/04 全球购物
暑期实习鉴定
2013/12/16 职场文书
应届行政管理专业个人自我评价
2013/12/28 职场文书
好矿嫂事迹材料
2014/01/21 职场文书
招股说明书范本
2014/05/06 职场文书
晋江市人民政府党组群众路线教育实践活动整改方案
2014/10/25 职场文书
原生CSS实现文字无限轮播的通用方法
2021/03/30 HTML / CSS
ConstraintValidator类如何实现自定义注解校验前端传参
2021/06/18 Java/Android
php去除数组中为0的元素的实例分析
2021/11/17 PHP
使用CSS设置滚动条样式
2022/01/18 HTML / CSS
利用Python实时获取steam特惠游戏数据
2022/06/25 Python