【问题标题】:AngularJS: Escape HTML in input fieldsAngularJS:在输入字段中转义 HTML
【发布时间】:2019-06-20 01:49:22
【问题描述】:

在输入字段中转义 HTML 的最佳方法是什么?例如,我搜索输入字段

<input id="search" type="text" ng-model="search" placeholder="search...">

如果有人键入这样的内容,我想逃跑:

<script>alert("test123");</script>

【问题讨论】:

  • @Fran 问题很明确。他想转义 HTML 字符。
  • @lin 这个问题没有显示研究工作,并且当 OP 想要转义字符时,对我来说要求不清楚。因此,我要求提供更多信息。

标签: javascript html angularjs


【解决方案1】:

这完全取决于您的用例。如果你只是想让它为用户视图转义(所以基本上是消毒),你可以使用 angular $sanitize & $sce

https://docs.angularjs.org/api/ngSanitize/service/$sanitizehttps://docs.angularjs.org/api/ng/service/$sce

但是,如果您想将它存储在某个地方并希望它转义,您可以构建一个过滤器。你可以在这里找到一个例子:Escape HTML text in an AngularJS directive

【讨论】:

    【解决方案2】:

    您可以使用lodash _.escape([string=''])。这是一个简单易行的解决方案。

    _.escape($scope.search);
    

    【讨论】:

      【解决方案3】:

      您可以将pattern 用于您的输入框,例如 -

      <input type='text' pattern='[a-zA-Z0-9]+'>
      

      使用最适合您需要的表达方式。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-04-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-06
        相关资源
        最近更新 更多