加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

在AngularJS指令中转义HTML文本

发布时间:2020-12-17 08:24:33 所属栏目:安全 来源:网络整理
导读:有没有一个角度的JS命令,将HTML文本转义?我正在处理一个自定义指令,并且需要转义它生成的一些输出。 在内部,AngularJS sanitzer使用encodeEntities功能,但不会暴露它。我知道我可以复制这个功能,但似乎应该有一个标准的方式来做到这一点。 用例:我有
有没有一个角度的JS命令,将HTML文本转义?我正在处理一个自定义指令,并且需要转义它生成的一些输出。

在内部,AngularJS sanitzer使用encodeEntities功能,但不会暴露它。我知道我可以复制这个功能,但似乎应该有一个标准的方式来做到这一点。

用例:我有一个自定义的指令,它进行语言本地化。该指令使用数据文件中的键查找来查找语言文本。在某些情况下,此文本允许包含HTML,和/或该指令生成HTML以改进生成的视觉格式。此外,该指令将Angular表达式作为参数,并将其用作字符串中令牌的替换。我需要对这些参数进行编码,因为它们可能不是HTML安全的。

该指令被称为属性,例如i18n-html =’welcome_text_html,11,user.name’。该指令然后按照描述格式化字符串,并使用element.html来更新DOM节点。

这个答案是关于转义,而不是清理HTML。有两种方法:

>如@maniekq所提到的,如果您可以在DOM上工作,请执行以下操作:

element.text( scope.myValue );

>从this answer,您可以使用这个code from mustache.js,例如创建一个角度过滤器:

angular.module('myModule').filter('escapeHtml',function () {

    var entityMap = {
        "&": "&amp;","<": "&lt;",">": "&gt;",'"': '&quot;',"'": '&#39;',"/": '&#x2F;'
    };

    return function(str) {
        return String(str).replace(/[&<>"'/]/g,function (s) {
            return entityMap[s];
        });
    }
});

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读