如何在javascript中进行HttpUtility.HtmlDecode

How to HttpUtility.HtmlDecode in javascript

本文关键字:HttpUtility HtmlDecode javascript      更新时间:2023-09-26

我有一个localStorage,里面有一个字符串,如下所示:

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

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

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

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

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

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

注意,它应该是nbsp(非中断空间),而不是nbps


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

这个问题在这里之前已经回答过了。但它是 而不是&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/

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

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