【问题标题】:How to change valid HTML tags that get rendered in ng-bind-html?如何更改在 ng-bind-html 中呈现的有效 HTML 标签?
【发布时间】:2014-08-18 14:45:29
【问题描述】:

我有一个文本编辑器 (textAngular),我已经对其进行了修改,以限制我可以使用该工具生成的有效 HTML 标记的数量。现在,我只想支持有限数量的 HTML 元素(h3、h4、h5、h6、ol、ul)来生成新闻报道,但我想禁用一些由 ng-bind-html 呈现的有效 HTML。即,我想删除 , 标签作为有效标签,因为它们可能对该用户生成的内容产生灾难性的结果。

是否可以删除和标记为 ng-bind-html 呈现的内容?

【问题讨论】:

    标签: angularjs angularjs-directive angularjs-scope angular-ui-bootstrap


    【解决方案1】:

    很遗憾,无法配置有效的 HTML 标记。

    ng-bind-html 使用$sanitize 服务去除无效标签/属性,您可以在source code 中看到所有配置都是私有的。

    // Safe Block Elements - HTML5
    var blockElements = angular.extend({}, optionalEndTagBlockElements, makeMap("address,article," +
            "aside,blockquote,caption,center,del,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5," +
            "h6,header,hgroup,hr,ins,map,menu,nav,ol,pre,script,section,table,ul"));
    
    // Inline Elements - HTML5
    var inlineElements = angular.extend({}, optionalEndTagInlineElements, makeMap("a,abbr,acronym,b," +
            "bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,q,ruby,rp,rt,s," +
            "samp,small,span,strike,strong,sub,sup,time,tt,u,var"));
    

    如果你真的想要它,你可以做的一种方法是复制angular-sanitize.js并直接修改有效的HTML标签配置。

    请注意,如果您这样做,您整个应用程序中的所有ng-bind-html 也会受到影响。如果不希望这样,您必须编写自己的自定义指令并注入/使用修改后的$sanitize 版本。

    【讨论】:

      【解决方案2】:

      如果您已经在修改 textAngular,您可以修改代码的 taCustomRenderers 部分周围的内容并使用 ta-bind 而不是 ng-bind-html。除了 ta-bind 运行所有额外的渲染器之外,它们几乎做同样的事情。

      自定义渲染器代码:textAngularSetup、textAngular - 可能在这个代码中您可以去除不需要的代码。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-09-23
        • 2013-11-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多