').html("<%= data.name...} " method to perform HTML escaping operation."/> ').html("<%= data.name...} " method to perform HTML escaping operation.">

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

How to implement anti-escaping in javascript

藏色散人
藏色散人Original
2021-10-25 14:04:003128browse

javascript实现反转义的方法:1、打开相应的javascript代码文件;2、通过“var jsonData={title: $('33b1bc916d84359affde379750cfb2ad').html("602720d14f53a866a89d340c22e89923包起来的部分是从服务端返回的值(上例中的代码取自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;");

2. JQuery写法:

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

  第一个函数使用原生的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; %>"
};

   这样便可以在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!

Statement:
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