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 相关文章推荐
修改发贴的编辑功能
Mar 07 Javascript
JavaScript中的return语句简单介绍
Dec 07 Javascript
简介AngularJS中$http服务的用法
Feb 06 Javascript
使用jquery/js获取iframe父子级、同级获取元素的方法
Aug 05 Javascript
bootstrap中使用google prettify让代码高亮的方法
Oct 21 Javascript
微信小程序 图片边框解决方法
Jan 16 Javascript
ES6中Proxy与Reflect实现重载(overload)的方法
Mar 30 Javascript
深究AngularJS中ng-drag、ng-drop的用法
Jun 12 Javascript
JS实现非首屏图片延迟加载的示例
Jan 06 Javascript
学习Vue组件实例
Apr 28 Javascript
简单通过settimeout看javascript的运行机制
May 10 Javascript
layui 上传图片 返回图片地址的方法
Sep 26 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+AJAX实现无刷新注册(带用户名实时检测)
2007/01/02 PHP
php 调用远程url的六种方法小结
2009/11/02 PHP
php身份证号码检查类实例
2015/06/18 PHP
PHP简单判断字符串是否包含另一个字符串的方法
2016/03/25 PHP
javascript arguments 传递给函数的隐含参数
2009/08/21 Javascript
为调试JavaScript添加输出窗口的代码
2010/02/07 Javascript
理解Javascript_02_理解undefined和null
2010/10/11 Javascript
在一个js文件里远程调用jquery.js会在ie8下的一个奇怪问题
2010/11/28 Javascript
轻松创建nodejs服务器(4):路由
2014/12/18 NodeJs
基于javascript代码检测访问网页的浏览器呈现引擎、平台、Windows操作系统、移动设备和游戏系统
2015/12/03 Javascript
基于BootStrap Metronic开发框架经验小结【八】框架功能总体界面介绍
2016/05/12 Javascript
关于Vue项目跨平台运行问题的解决方法
2018/09/18 Javascript
Nodejs模块的调用操作实例分析
2018/12/25 NodeJs
Vue实现兄弟组件间的联动效果
2020/01/21 Javascript
JavaScript仿京东秒杀倒计时
2020/03/17 Javascript
微信小程序 接入腾讯地图的两种写法
2021/01/12 Javascript
[01:04:09]DOTA2-DPC中国联赛 正赛 iG vs VG BO3 第二场 2月2日
2021/03/11 DOTA
在Django的URLconf中进行函数导入的方法
2015/07/18 Python
简单解决Python文件中文编码问题
2015/11/22 Python
python web框架学习笔记
2016/05/03 Python
KMP算法精解及其Python版的代码示例
2016/06/01 Python
在Python程序和Flask框架中使用SQLAlchemy的教程
2016/06/06 Python
Python 实现12306登录功能实例代码
2018/02/09 Python
Python读取Word(.docx)正文信息的方法
2018/03/15 Python
详解Python最长公共子串和最长公共子序列的实现
2018/07/07 Python
pyside+pyqt实现鼠标右键菜单功能
2020/12/08 Python
Python实现直播推流效果
2019/11/26 Python
Pycharm如何导入python文件及解决报错问题
2020/05/10 Python
python爬虫用request库处理cookie的实例讲解
2021/02/20 Python
如何在Oracle中查看各个表、表空间占用空间的大小
2015/10/31 面试题
Shell脚本如何向终端输出信息
2014/04/25 面试题
工作表扬信的范文
2014/01/10 职场文书
四川成都导游欢迎词
2014/01/18 职场文书
淘宝客服专员岗位职责
2014/04/11 职场文书
医院义诊活动总结
2014/07/04 职场文书
师德承诺书2015
2015/04/28 职场文书