【问题标题】:Angular - Strip all tags from inputsAngular - 从输入中删除所有标签
【发布时间】:2016-04-01 21:44:08
【问题描述】:

在我的 Angular 应用程序中,我想清理任何输入以去除任何/所有标签,因此即使用户输入 <h1>superman</h1>,html 标签也会被去除。

现在我已经阅读了有关 ngSanitize 的信息,但是在此文档页面 https://docs.angularjs.org/api/ngSanitize/service/$sanitize 中提到了白名单,所以我认为这意味着 Angular 会接受 <h1> 之类的内容。

我的理解正确吗?

如果是这样,我如何从任何输入中强制删除所有标签?

谢谢。

【问题讨论】:

    标签: angularjs


    【解决方案1】:

    ngSanitize 只是让 html 安全,所以它不能在里面运行 javascript。您可能希望在此处使用带有正则表达式的简单 javascript 替换方法。

    类似:

    var str = '<h1>superman</h1>';
    str.replace(/<[^>]+>/g, '');
    

    这将删除所有 XML 标记,而不仅仅是 html。

    【讨论】:

    • 酷 - 有道理。那么,为什么 Angular 不开箱即用地提供类似的东西呢?对于像用户名输入字段这样人们永远不会真正期望输入 html 的东西,这不是很重要吗?
    • 他们无法实现用户可能想做的所有事情。这就是为什么他们有过滤器。如果需要,您可以实现自己的自定义过滤器。
    【解决方案2】:

    请参考这个 plnkr 例子 https://plnkr.co/edit/F9K3sekUQUJPBUts8Jdw?p=preview

    var strip = function() {
       var tmp = document.createElement("DIV");
       tmp.innerHTML = $scope.strip; // assuming text box is using "strip" for ng-model
       return tmp.textContent || tmp.innerText || "";
    };
    

    可以用简单的 Javascript 来完成。不需要ngSanitize 或任何其他angularjs 特定代码。

    【讨论】:

    • 谢谢 - 我可以看到它是如何工作的,但是会继续上面的,我更容易阅读:-)。再次感谢,不胜感激
    猜你喜欢
    • 2017-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-21
    • 2011-03-02
    • 1970-01-01
    • 1970-01-01
    • 2019-01-06
    相关资源
    最近更新 更多