Home > Web Front-end > Front-end Q&A > How to implement anti-escaping in javascript

How to implement anti-escaping in javascript

藏色散人
Release: 2021-10-25 14:04:00
Original
3139 people have browsed it

javascript实现反转义的方法:1、打开相应的javascript代码文件;2、通过“var jsonData={title: $('

').html("<%= data.name...}”方式进行HTML反转义操作即可。

How to implement anti-escaping in javascript

本文操作环境:windows7系统、javascript1.8.5版、Dell G3电脑。

javascript怎么实现反转义?

在JavaScript中对HTML进行反转义:

  在JavaScript中对字符串进行转义和反转义操作,常用的方法莫过于使用encodeURI (decodeURI)、encodeURIComponent (decodeURIComponent)这几个方法,具体使用方法和区别可以参考这篇文章http://qianduanblog.com/post/js-learning-34-en-decodeuri-en-decodeuricomponent-un-escape-btoa-atob.html

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

var jsonData = {
    title: "<%= data.name? data.name : title %>",
    desc: "<%= data.content? data.content : &#39;&#39; %>",
    image: "<%- data.img? data.img : &#39;&#39; %>"
};
Copy after login

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

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

1. 原生JavaScript写法:

function htmlDecode(input){
  var e = document.createElement(&#39;div&#39;);
  e.innerHTML = input;
  return e.childNodes.length === 0 ? "" : e.childNodes[0].nodeValue;
}
htmlDecode("&lt;img src=&#39;myimage.jpg&#39;&gt;");
Copy after login

2. JQuery写法:

function htmlDecode(value){ 
  return $(&#39;<div/>&#39;).html(value).text(); 
}
Copy after login

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

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

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

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

【推荐学习:javascript基础教程

The above is the detailed content of How to implement anti-escaping in javascript. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template