在JavaScript中对HTML进行反转义详解


Posted in Javascript onMay 18, 2016

在JavaScript中对字符串进行转义和反转义操作,常用的方法莫过于使用encodeURI (decodeURI)、encodeURIComponent (decodeURIComponent)这几个方法,具体使用方法和区别。

但是如何在JavaScript中对HTML进行反转义操作呢?例如下面这段代码:

var jsonData = {
  title: "<%= data.name? data.name : title %>",
  desc: "<%= data.content? data.content : '' %>",
  image: "<%- data.img? data.img : '' %>"
};

其中<%= %>包起来的部分是从服务端返回的值(上例中的代码取自Node.js中Express的ejs模板的代码)。如果从服务端返回的字符串中包含有引号,例如单引号或者双引号,那上述这段JS代码在浏览器中解释的时候会出现错误。如何解决这个问题呢?

其基本思路是通过页面上DOM元素的innerHTML属性将字符串进行HTML反转义,然后将值返回给JavaScript的变量。看下面两段代码:

1. 原生JavaScript写法:

function htmlDecode(input){
 var e = document.createElement('div');
 e.innerHTML = input;
 return e.childNodes.length === 0 ? "" : e.childNodes[0].nodeValue;
}

htmlDecode("<img src='myimage.jpg'>");

2. JQuery写法:

function htmlDecode(value){ 
 return $('<div/>').html(value).text(); 
}

第一个函数使用原生的JavaScript方法创建一个DIV元素,然后将需要反转义的字符串赋值给它的innerHTML属性,最后返回DIV元素的nodeValue属性的值。第二个函数则使用JQuery的方法,其基本原理和第一个函数相同。由于DIV元素都只是在内存中创建,并未append或inert到页面上,所以不会对现有的页面产生任何影响。

最后,我们将一开始的那段代码改成下面的这种方式:

var jsonData = {
  title: $('<div/>').html("<%= data.name? data.name : title %>").text(),
  desc: $('<div/>').html("<%= data.nontent? data.nontent : '' %>").text(),
  image: "<%- data.img? data.img : '' %>"
};

这样便可以在JavaScript中对服务器端返回的字符串进行HTML反转义操作了。

以上这篇在JavaScript中对HTML进行反转义详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript实现仿银行密码输入框效果的代码
Dec 13 Javascript
一个tab标签切换效果代码
Mar 27 Javascript
javascript整除实现代码
Nov 23 Javascript
js识别不同浏览器基于userAgent做判断
Jul 29 Javascript
jquery.form.js实现将form提交转为ajax方式提交的方法
Apr 07 Javascript
详细分析JavaScript变量类型
Jul 08 Javascript
详解Vue用axios发送post请求自动set cookie
May 10 Javascript
vue.js前后端数据交互之提交数据操作详解
Apr 24 Javascript
jQuery实现的五星点评功能【案例】
Feb 18 jQuery
vue2 拖动排序 vuedraggable组件的实现
Aug 08 Javascript
JS代码触发事件代码实例
Jan 02 Javascript
js实现简单扫雷
Nov 27 Javascript
深入理解JavaScript中的浮点数
May 18 #Javascript
Node.js返回JSONP详解
May 18 #Javascript
noty ? jQuery通知插件全面解析
May 18 #Javascript
Avalon中文长字符截取、关键字符隐藏、自定义过滤器
May 18 #Javascript
jQuery实现图片向左向右切换效果的简单实例
May 18 #Javascript
JavaScript 基础函数_深入剖析变量和作用域
May 18 #Javascript
实现JavaScript的组成----BOM和DOM详解
May 18 #Javascript
You might like
第十三节 对象串行化 [13]
2006/10/09 PHP
基于mysql的论坛(1)
2006/10/09 PHP
php读取30天之内的根据算法排序的代码
2008/04/06 PHP
php curl模拟post请求和提交多维数组的示例代码
2015/11/19 PHP
用javascript来实现动画导航效果的代码
2007/12/16 Javascript
js弹窗代码 可以指定弹出间隔
2010/07/03 Javascript
JavaScript bold方法入门实例(把指定文字显示为粗体)
2014/10/17 Javascript
javascript实现 百度翻译 可折叠的分享按钮列表
2015/03/12 Javascript
使用JQuery在线制作ppt并在线演示源码特效
2015/09/08 Javascript
JSONP原理及简单实现
2016/06/08 Javascript
JavaScript选取(picking)和反选(rejecting)对象的属性方法
2017/08/16 Javascript
JavaScript实现离开页面前提示功能【附jQuery实现方法】
2017/09/26 jQuery
详解vue 项目白屏解决方案
2018/10/31 Javascript
Node.js 多线程完全指南总结
2019/03/27 Javascript
vue 开发企业微信整合案例分析
2019/12/02 Javascript
详解微信小程序中var、let、const用法与区别
2020/01/11 Javascript
vue tab切换,解决echartst图表宽度只有100px的问题
2020/07/19 Javascript
举例讲解Python程序与系统shell交互的方式
2015/04/09 Python
Python 2.7中文显示与处理方法
2018/07/16 Python
PyQt5 QTable插入图片并动态更新的实例
2019/06/18 Python
django框架事务处理小结【ORM 事务及raw sql,customize sql 事务处理】
2019/06/27 Python
python3 深浅copy对比详解
2019/08/12 Python
python3.7实现云之讯、聚合短信平台的短信发送功能
2019/09/26 Python
sklearn-SVC实现与类参数详解
2019/12/10 Python
pytorch实现线性拟合方式
2020/01/15 Python
TensorFlow的环境配置与安装方法
2021/02/20 Python
广告学专业应届生求职信
2013/10/01 职场文书
大学生毕业自我鉴定
2013/11/06 职场文书
教师绩效考核方案
2014/01/21 职场文书
兰兰过桥教学反思
2014/02/08 职场文书
搞笑的获奖感言
2014/08/16 职场文书
迎七一演讲稿
2014/09/12 职场文书
国土资源局开展党的群众路线教育实践活动整改措施
2014/09/26 职场文书
领导班子对照检查剖析材料
2014/10/13 职场文书
故宫英文导游词
2015/01/31 职场文书
CSS 使用 resize 实现图片拖拽切换预览功能(强大功能)
2021/08/23 HTML / CSS