我有一个localStorage,其中包含一个如下所示的字符串:
"ABC&nbps;&nbps;&nbps;&nbps;ABC Description"
我从localStorage获取此字符串,我需要将此字符串的值设置为下拉控件的Option,用空格替换不间断空格实体(以便与其他选项对齐)。
在ASP.NET的代码中我会使用HttpUtility.HtmlDecode。但是你如何在javascript中解码这个字符串呢?
答案 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;
})();
答案 2 :(得分:0)
如果您在客户端使用Jquery,请使用此转换为html。
theHtml = $.parseHTML( "ABC ABC Description" );