本文实例讲述了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('

&

'));

//

& © ABC 中文 中文

alert(htmldecode('<p> & © ABC 中文 中文 </p>'));

}

效果不错。

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

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

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

html在线encode,javascript另类方法实现htmlencode()与htmldecode()函数实例分析相关推荐

  1. php大乐透,JavaScript实现大乐透号码生成的实例分析

    这个"大乐透号码生成器"纯前端开发,涉及HTML.JS.CSS.为了简单起见,把所有代码写到了一个html文件中,这样的好处就是可以直接用浏览器打开这个文件,当然实际工作中最好把他 ...

  2. jquery 高效实现htmlencode()与htmldecode()函数

    htmlEncode: function (html) {return $("<div>").text(html).html(); }, htmlDecode: fun ...

  3. 预防XSS——后端HttpUtility.HtmlEncode,AntiXssEncoder.HtmlEncode方法;前端htmlencode,htmldecode,JavaScriptEncode

    注意: 在.Net MVC中通过前端页面绑定Model变量的方式一般不需要另外处理Model变量中的xss问题,内部已经自动避免了xss问题,所以用Model也是一种处理xss的方案. 另外,有种情况 ...

  4. js 数组从头添加到数组_如何从头开始实现JavaScript数组方法

    js 数组从头添加到数组 介绍 (Introduction) JavaScript includes several functions for working with arrays that go ...

  5. Javascript 核心方法加密,JS方法完美在线加密工具介绍及演示

    Javascript 核心方法加密介绍: JS方法加密工具地址:Javascript方法加密,JS核心代码加密,JS不可逆加密 - [JavaScript加密] 优点: 1.完全打乱顺序,并且很难跟踪 ...

  6. pythonunicode和str_python的str,unicode对象的encode和decode方法

    python的str,unicode对象的encode和decode方法 python中的str对象其实就是"8-bit string" ,字节字符串,本质上类似java中的byt ...

  7. JavaScript基本属性方法

    JavaScript基本属性方法参考 document.body.scrollTop 返回和设置当前竖向滚动条的坐标值,须与函数配合, document.body.scrollLeft 返回和设置当前 ...

  8. mysql注入实例获取答案_本文实例讲述了MySQL解决SQL注入的另类方法。分享给大家供大家参考,具体如下:问题解读我觉得,这个问题每年带来的成本可以高达数十亿美元了。本文就来谈谈,...

    本文实例讲述了MySQL解决SQL注入的另类方法.分享给大家供大家参考,具体如下: 问题解读 我觉得,这个问题每年带来的成本可以高达数十亿美元了.本文就来谈谈,假定我们有如下 SQL 模板语句: se ...

  9. JavaScript的方法和技巧

    摘自http://www.cnblogs.com/Jamedy/archive/2007/02/14/650079.html 有些时候你精通一门语言,但是会发现你其实整天在和其它语言打交道,也许你以为 ...

最新文章

  1. input输入框为number类型时,去掉上下小箭头
  2. Elasticsearch-6.7.0系列(六)ES设置集群密码
  3. Redis 实践笔记
  4. 【Java】如何理解Java中的异常机制?
  5. hoj2434 going to know him
  6. 精神独立,才是一个人最大的底气
  7. tomact配置好ssl证书后访问不到tomact_服务器上配置HTTPS的操作方法!
  8. spring mvc +@Valid +@RequestBody 来做参数校验返回400,并且不显示具体message 如何解决...
  9. Linux进程的管理与调度(八) -- Linux下进程的创建过程分析(_do_fork/do_fork详解)
  10. Linux基础教程之系统管理篇系统部署
  11. 【转】Tapestry5和Eclipse的整合
  12. 基于ABAQUS蠕变储层稠油蒸汽吞吐开发过程数值模拟
  13. 笔记本电脑上如何创建html,笔记本怎么创建wifi_笔记本电脑怎么创建无线网络-win7之家...
  14. 计算机五笔教学软件,指法练习 XP
  15. 常用的的身份证校验方法
  16. 【JavaScript】多行文本省略,并且判断是否需要省略。
  17. 一个数据分析师,在公司里的主要职责是什么?
  18. 云师大计算机调剂,云南师范大学2020考研调剂公告
  19. 电脑蓝屏0x0000007B
  20. 使用dlsym动态加载库函数、封装原有库函数

热门文章

  1. Latex系列4---数学公式
  2. 阿里巴巴开发手册:Mysql的ORM规范
  3. (附源码)基于PHP初中英语在线考试系统的设计与实现-计算机毕设87564
  4. LinuxDeepin 9.12 Beta1
  5. 电话销售机器人代替人工打催收电话客服机器人
  6. Scratch也能玩体感游戏
  7. linux设置anaconda环境变量,在Linux中永久设置Anaconda环境变量的方法
  8. Spring getBean流程
  9. pytorch模型微调(Finetune)
  10. k8s nginx ingress原理解读