如何捕获ngSantitize错误并将html显示为转义文本

时间:2015-06-04 16:46:41

标签: html angularjs sanitization html-sanitizing

我们正在使用AngularJS尝试将用户输入的内容显示为HTML。大多数情况下,用户输入我们使用ng-bind-html正确显示的有效/安全数据。有时他们会输入无效的HTML,我仍然希望将其显示为原始文本。

如果我使用ng-bind-html尝试显示无效的HTML,我会收到此错误:

[$sanitize:badparse] The sanitizer was unable to parse the following block of html:

我不想使用trustAsHtml,因为我不相信我们的清洁剂,并希望确保我们不在页面上显示不安全的html。

2 个答案:

答案 0 :(得分:1)

根据ngBindHtmlDirective你可以这样做:

HTML:

<div ng-if="isSafeHtml()">
  <div ng-bind-html="invalidHtml"></div>
</div>
<div ng-if="!isSafeHtml()">
  {{invalidHtml}}
</div> 

JS:

$scope.isSafeHtml = function() {
   return !!$sce.getTrustedHtml($scope.invalidHtml);
}

修改过的plunkr:http://plnkr.co/edit/Besix3PfQ1TjUEEagfca?p=preview

答案 1 :(得分:0)

我最终创建了一个指令来执行此操作。以下是它的使用方法。

<div ng-bind-html-if-safe="SomeHtml"></div>

可以找到指令的来源here