当前位置:  开发笔记 > 编程语言 > 正文

在Javascript中使用Unescape HTML实体?

如何解决《在Javascript中使用UnescapeHTML实体?》经验,为你挑选了5个好方法。

我有一些与XML-RPC后端通信的Javascript代码.XML-RPC返回表单的字符串:


但是,当我使用Javascript将字符串插入HTML时,它们会逐字呈现.我没有看到图像,我真的看到了字符串:


我的猜测是HTML正在通过XML-RPC通道进行转义.

我怎样才能在Javascript中取消字符串?我尝试了这个页面上的技术,但未成功:http://paulschreiber.com/blog/2008/09/20/javascript-how-to-unescape-html-entities/

诊断问题的其他方法有哪些?



1> Wladimir Pal..:

这里给出的大多数答案都有一个很大的缺点:如果您尝试转换的字符串不受信任,那么您最终会遇到跨站点脚本(XSS)漏洞.对于接受的答案中的功能,请考虑以下事项:

htmlDecode("");

这里的字符串包含一个未转义的HTML标记,因此该htmlDecode函数不会解码任何内容,而是实际运行字符串中指定的JavaScript代码.

使用所有现代浏览器都支持的DOMParser可以避免这种情况:

function htmlDecode(input)
{
  var doc = new DOMParser().parseFromString(input, "text/html");
  return doc.documentElement.textContent;
}

// This returns ""
htmlDecode("<img src='myimage.jpg'>");

// This returns ""
htmlDecode("");

保证此函数不会将任何JavaScript代码作为副作用运行.将忽略任何HTML标记,仅返回文本内容.

兼容性说明:解析HTML DOMParser至少需要Chrome 30,Firefox 12,Opera 17,Internet Explorer 10,Safari 7.1或Microsoft Edge.因此,所有没有支持的浏览器都会超过他们的EOL,而截至2017年,唯一仍然可以在野外看到的浏览器偶尔会出现旧的Internet Explorer和Safari版本(通常这些版本仍然不足以打扰).


我认为这个答案是最好的,因为它提到了XSS漏洞.
@PointedEars:2016年谁关心Firefox 12?有问题的是Internet Explorer高达9.0和Safari高达7.0.如果有人能够不支持它们(希望很快就能成为所有人),那么DOMParser就是最好的选择.如果不是 - 是的,处理实体只是一种选择.
@PointedEars:`
mobiledu2402851373
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有