首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在AngularJS中从可信源插入iframe

在AngularJS中从可信源插入iframe
EN

Stack Overflow用户
提问于 2015-01-20 17:01:46
回答 1查看 5K关注 0票数 2

尝试使用ng-bind-html将iframe插入到AngularJS页面中&即使是最简单的形式,我也无法让它工作。

Javascript

代码语言:javascript
运行
复制
function Ctrl($scope) {
   $scope.showIt = '<iframe src="http://www.anything.com"></iframe>';
}

My:

代码语言:javascript
运行
复制
<div ng-bind-html="showIt"></div>
EN

Stack Overflow用户

回答已采纳

发布于 2015-01-20 17:08:19

您需要使用$sce服务告诉角在视图中呈现html内容。

角医生说

$sce是一种向AngularJS提供严格上下文转义服务的服务。SCE以这样的方式协助编写代码:(a)在默认情况下是安全的;(b)使对安全漏洞(如XSS、单击劫持等)的审核变得容易得多。

在此之前,您需要在应用程序中注入ngSanitize依赖项。

您可以使用filtercontroller两种方式来完成它。

代码语言:javascript
运行
复制
<div ng-app="app" ng-controller="mainCtrl">
    Using Filter
    <div ng-bind-html="showIt | toTrusted"></div>
    Using Controller
    <div ng-bind-html="htmlSafe(showIt)"></div>
</div>

JavaScript码

代码语言:javascript
运行
复制
var app = angular.module('app', ['ngSanitize']).
controller('mainCtrl', function ($scope, $sce) {
    $scope.showIt = '<iframe src="http://www.anything.com"></iframe>';
    $scope.htmlSafe = function (data) {
        return $sce.trustAsHtml(data);
    }
}).
filter('toTrusted', function ($sce) {
    return function (value) {
        return $sce.trustAsHtml(value);
    };
});

从角1.2开始,$sce特性就启用了下面的版本,您应该在角的配置阶段启用/禁用它。

代码语言:javascript
运行
复制
app.config(['$sceProvider', function($sceProvider) {
    $sceProvider.enabled(true);
}]);

这是工频

票数 8
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28051061

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档