如果您有一个包含 HTML 实体的字符串并且想要取消转义,则建议多次使用此解决方案(或其变体):
function htmlDecode(input){
var e = document.createElement('div');
e.innerHTML = input;
return e.childNodes.length === 0 ? "" : e.childNodes[0].nodeValue;
}
htmlDecode("<img src='myimage.jpg'>");
// returns "<img src='myimage.jpg'>"
(例如,请参阅此答案:https ://stackoverflow.com/a/1912522/1199564 )
只要字符串不包含换行符并且我们不在Internet Explorer 版本 pre 10 上运行(在版本 9 和 8 上测试),这工作正常。
如果字符串包含换行符,IE 8 和 9 将用空格字符替换它,而不是保持不变(就像在 Chrome、Safari、Firefox 和 IE 10 上一样)。
htmlDecode("Hello\nWorld");
// returns "Hello World" on IE 8 and 9
对于 IE 10 之前的解决方案有什么建议吗?