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 相关文章推荐
jsp+javascript打造级连菜单的实例代码
Jun 14 Javascript
常用的JavaScript验证正则表达式汇总
Nov 26 Javascript
自制的文件上传JS控件可支持IE、chrome、firefox etc
Apr 18 Javascript
node.js实现逐行读取文件内容的代码
Jun 27 Javascript
Node.js本地文件操作之文件拷贝与目录遍历的方法
Feb 16 Javascript
jQuery stop()用法实例详解
Jul 28 Javascript
JS对大量数据进行多重过滤的方法
Nov 04 Javascript
JS数组操作之增删改查的简单实现
Aug 21 Javascript
微信小程序scroll-view组件实现滚动动画
Jan 31 Javascript
vue-router的钩子函数用法实例分析
Oct 26 Javascript
Vue列表如何实现滚动到指定位置样式改变效果
May 09 Javascript
Vue利用localStorage本地缓存使页面刷新验证码不清零功能的实现
Sep 04 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/03/27 PHP
IIS7.X配置PHP运行环境小结
2011/06/09 PHP
PHPThumb PHP 图片缩略图库
2012/03/11 PHP
php实现的SESSION类
2014/12/02 PHP
PHP中将一个字符串部分字符用星号*替代隐藏的实现代码
2019/09/08 PHP
JQuery.closest(),parent(),parents()寻找父结点
2012/02/17 Javascript
JQuery 获取json数据$.getJSON方法的实例代码
2013/08/02 Javascript
JS截取url中问号后面参数的值信息
2014/04/29 Javascript
Javascript中获取对象的原型对象的方法小结
2015/02/25 Javascript
jquery实现简单的二级导航下拉菜单效果
2015/09/07 Javascript
浅析Bootstrap缩略图组件与警示框组件
2016/04/29 Javascript
bootstrap中模态框、模态框的属性实例详解
2017/02/17 Javascript
详解Angular之constructor和ngOnInit差异及适用场景
2017/06/22 Javascript
手把手教你搭建ES6的开发运行环境
2017/07/11 Javascript
vue实现引入本地json的方法分析
2018/07/12 Javascript
微信小程序实现的动态设置导航栏标题功能示例
2019/01/31 Javascript
JS div匀速移动动画与变速移动动画代码实例
2019/03/26 Javascript
Vue 自适应高度表格的实现方法
2020/05/13 Javascript
vue-router 2.0 跳转之router.push()用法说明
2020/08/12 Javascript
python fabric使用笔记
2015/05/09 Python
python list是否包含另一个list所有元素的实例
2018/05/04 Python
python3爬虫学习之数据存储txt的案例详解
2019/04/24 Python
python 自动轨迹绘制的实例代码
2019/07/05 Python
python文档字符串(函数使用说明)使用详解
2019/07/30 Python
python用pip install时安装失败的一系列问题及解决方法
2020/02/24 Python
python+excel接口自动化获取token并作为请求参数进行传参操作
2020/11/10 Python
phonegap常用事件总结(必看篇)
2017/03/31 HTML / CSS
武汉瑞得软件笔试题
2015/10/27 面试题
医学专业职业生涯规划范文
2014/02/05 职场文书
高中学生自我评价范文
2014/09/23 职场文书
上课玩手机的检讨书
2014/10/01 职场文书
2014年教师德育工作总结
2014/11/10 职场文书
学校国庆节活动总结
2015/03/23 职场文书
宫崎骏十大动画电影,宫崎骏好看的动画电影排名
2022/03/22 日漫
docker 制作mysql镜像并自动安装
2022/05/20 Servers
Apache POI操作批量导入MySQL数据库
2022/06/21 Servers