如何在javascript中HttpUtility.HtmlDecode

时间:2015-11-29 01:08:14

标签: javascript asp.net

我有一个localStorage,其中包含一个如下所示的字符串:

  "ABC&nbps;&nbps;&nbps;&nbps;ABC Description"

我从localStorage获取此字符串,我需要将此字符串的值设置为下拉控件的Option,用空格替换不间断空格实体(以便与其他选项对齐)。

在ASP.NET的代码中我会使用HttpUtility.HtmlDecode。但是你如何在javascript中解码这个字符串呢?

3 个答案:

答案 0 :(得分:2)

您可以使用以下代码将HTML转换为文本(仅使用javascript)

 var span = document.createElement("SPAN");
 span.innerHTML = "ABC    ABC Description";
 alert(span.innerText);

它创建一个虚拟元素,将其HTML设置为HTML并提取文本。

请注意,它应为nbsp(不间断空格)而不是nbps

也就是说,你这样做的方式表明你允许用户输入任意HTML。这在安全性方面不是一个好主意(用户可能会将恶意HTML放入此字段中)。

答案 1 :(得分:1)

here之前回答了这个问题。但它的 不是&nbps;。要使用&nbps;解码错误的标记,您必须手动替换:whatever.replace('&nbps;', ' ');

删除脚本标记更安全,而不是让浏览器解析原始HTML。这样可以防止恶意代码被执行......

var decodeEntities = (function() {
  // this prevents any overhead from creating the object each time
  var element = document.createElement('div');

  function decodeHTMLEntities (str) {
    if(str && typeof str === 'string') {
      // strip script/html tags
      str = str.replace(/<script[^>]*>([\S\s]*?)<\/script>/gmi, '');
      str = str.replace(/<\/?\w(?:[^"'>]|"[^"]*"|'[^']*')*>/gmi, '');
      element.innerHTML = str;
      str = element.textContent;
      element.textContent = '';
    }

    return str;
  }

  return decodeHTMLEntities;
})();

http://jsfiddle.net/LYteC/4/

答案 2 :(得分:0)

如果您在客户端使用Jquery,请使用此转换为html。

theHtml = $.parseHTML( "ABC&nbsp;&nbsp;&nbsp;&nbsp;ABC Description" );