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 相关文章推荐
javascript &amp;&amp;和||运算法的另类使用技巧
Nov 28 Javascript
70+漂亮且极具亲和力的导航菜单设计国外网站推荐
Sep 20 Javascript
浅析jQuery中常用的元素查找方法总结
Jul 04 Javascript
js 判断文件类型并控制表单提交示例代码
Nov 14 Javascript
浅谈JavaScript Math和Number对象
Jan 26 Javascript
jQuery事件绑定与解除绑定实现方法
Apr 15 Javascript
JavaScript必知必会(七)js对象继承
Jun 08 Javascript
JavaScript 继承详解(六)
Oct 11 Javascript
vue 每次渲染完页面后div的滚动条保持在最底部的方法
Mar 17 Javascript
js遍历添加栏目类添加css 再点击其它删除css【推荐】
Jun 12 Javascript
详解jQuery中的prop()使用方法
Jan 05 jQuery
jQuery实现移动端下拉展现新的内容回弹动画
Jun 24 jQuery
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
利用discuz自带通行证整合dedecms的方法以及文件下载
2007/03/06 PHP
PHP初学者最感迷茫的问题小结
2010/03/27 PHP
php 判断访客是否为搜索引擎蜘蛛的函数代码
2011/07/29 PHP
教大家制作简单的php日历
2015/11/17 PHP
验证用户是否修改过页面的数据的实现方法
2008/09/26 Javascript
精选的10款用于构建良好易用性网站的jQuery插件
2011/01/23 Javascript
使用Java实现简单的server/client回显功能的方法介绍
2013/05/03 Javascript
js 遍历json返回的map内容示例代码
2013/10/29 Javascript
javascript Event对象详解及使用示例
2013/11/22 Javascript
JavaScript数字和字符串转换示例
2014/03/26 Javascript
两个多选select(multiple左右)添加、删除选项和取值实例
2014/05/12 Javascript
基于jquery实现全屏滚动效果
2015/11/26 Javascript
使用Jasmine和Karma对AngularJS页面程序进行测试
2016/03/05 Javascript
使用React实现轮播效果组件示例代码
2016/09/05 Javascript
React服务端渲染(总结)
2017/07/01 Javascript
细说Vue组件的服务器端渲染的过程
2019/05/30 Javascript
Vue路由模块化配置的完整步骤
2019/08/14 Javascript
微信小程序实现轨迹回放的示例代码
2019/12/13 Javascript
[03:39]这就是刀塔,我们是冠军!燃情短片讲述我们的DOTA故事
2019/07/02 DOTA
Django1.3添加app提示模块不存在的解决方法
2014/08/26 Python
Python tkinter模块弹出窗口及传值回到主窗口操作详解
2017/07/28 Python
Python引用传值概念与用法实例小结
2017/10/07 Python
浅谈Python实现2种文件复制的方法
2018/01/19 Python
python模块之subprocess模块级方法的使用
2019/03/26 Python
在python中利用try..except来代替if..else的用法
2019/12/19 Python
基于Python实现人脸自动戴口罩系统
2020/02/06 Python
对tensorflow中cifar-10文档的Read操作详解
2020/02/10 Python
python 实现弹球游戏的示例代码
2020/11/17 Python
介绍CSS3使用技巧5个
2009/04/02 HTML / CSS
使用phonegap操作数据库的实现方法
2017/03/31 HTML / CSS
科颜氏美国官网:Kiehl’s美国
2017/01/31 全球购物
优秀管理者事迹材料
2014/05/22 职场文书
保安公司服务承诺书
2014/05/28 职场文书
大型公益活动策划方案
2014/08/20 职场文书
学校端午节活动总结
2015/02/11 职场文书
Nginx URL重写rewrite机制原理及使用实例
2021/04/01 Servers