7

我有一个用于在页面上呈现博客文章的数据源。其中一个条目包含一个 IFRAME。我看到 IFRAME 在数据源中返回,但它从未呈现到 ng-bind-html 中的页面。

这是我的代码:

<div class="blog-post-content" ng-bind-html="entry.content" itemprop="text">
</div>

如果我将其切换到以下内容,我会看到 IFRAME 标记呈现出来,但现在它当然是 RAW HTML。

<div class="blog-post-content" itemprop="text">
    {{entry.content}}
</div>

我怎样才能让这个 IFRAME 呈现到页面上。

4

1 回答 1

7

这里最好的方法是重构您的数据源,使其仅包含 URL,而不是完整的 iframe 标记,并使用<iframe ng-src="entry.content"></iframe>.

ng-bind-html 对您不起作用,因为消毒剂可以保护您免受潜在的 XSS 攻击。

如果您不控制数据源,但完全信任它,您可以考虑scope.trustedContent = $sce.trustAsHtml(entry.content);在指令和<div ng-bind-html="trustedContent"></div>DOM 中使用 eg。

(当然,不控制它但完全信任它在术语上是矛盾的,因此您最好在指令中解析数据源以提取 url,而不是信任整个字符串。)

于 2015-07-06T16:54:32.280 回答