栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

要在JavaScript中转义HTML实体吗?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

要在JavaScript中转义HTML实体吗?

编辑:
您应该按照Wladimir的建议使用DOMParser API,因为发布的函数引入了安全漏洞,所以我编辑了以前的答案。

以下代码片段是旧答案的代码,但进行了少量修改:使用a

textarea
代替a
div
可以减少XSS漏洞,但是在IE9和Firefox中仍然存在问题。

function htmlDepre(input){  var e = document.createElement('textarea');  e.innerHTML = input;  // handle case of empty input  return e.childNodes.length === 0 ? "" : e.childNodes[0].nodevalue;}htmlDepre("&lt;img src='myimage.jpg'&gt;"); // returns "<img src='myimage.jpg'>"

基本上,我以编程方式创建DOM元素,将编码的HTML分配给它的innerHTML,并从在innerHTML插入上创建的文本节点中检索nodevalue。由于它只是创建一个元素而从不添加它,因此不会修改网站HTML。

它可以跨浏览器(包括较旧的浏览器)运行,并接受所有HTML字符实体。

编辑:此代码的旧版本不适用于带有空白输入的IE,如jsFiddle(在IE中查看)所示。上面的版本适用于所有输入。

更新:看来这不适用于大字符串,并且还引入了一个 安全漏洞 ,请参阅注释。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/415893.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号