gpt4 book ai didi

javascript - iframe 内的 AngularJS ng-src

转载 作者:IT王子 更新时间:2023-10-29 03:19:47 25 4
gpt4 key购买 nike

我在 iframe 中使用 ng-src 时遇到问题。我需要这样做:

<div class="tab-content">
<ul class="nav nav-tabs" ng-repeat="document in issues.Document">
<div class="tab-pane pdf-height col-md-5 padding_0" id="{{document.name}}">
<iframe ng-src="http://192.168.223.110/cat/{{document.directory}}/{{document.name}}.{{document.type}}" height="100%" width="100%"></iframe>
</div>
</ul>
</div>

结果:

<iframe ng-src="http://192.168.223.110/cat/{{document.directory}}/{{document.name}}.{{document.type}}" height="100%" width="100%" src="http://192.168.223.110/cat/{{document.directory}}/{{document.name}}.{{document.type}}"></iframe>

我知道问题是 $sce,它是 XSS 的保护,并且需要将链接添加到白名单中......所以当我这样做时它正在工作。

<ul class="nav nav-tabs" ng-repeat="document in issues.Document">
<div class="tab-pane pdf-height col-md-5 padding_0" id="{{document.name}}">
<iframe ng-src="{{someUrl}}" height="100%" width="100%"></iframe>
</div>
</ul>

然后我在 Controller 内部定义:

$rootScope.someUrl = $sce.trustAsResourceUrl('http://192.168.223.110/cat/files/incoming/12345_3232ASD_pero.pdf');

但我不能那样做,因为我正在使用 ng-repeat 循环,所以链接是动态生成的。它需要从数据库中读取!

最佳答案

您可以改用过滤器:

HTML:

<iframe src="{{yourURL | trustAsResourceUrl}}"></iframe>

其中“yourURL”是 iframe 的 URL,“trustAsResourceUrl”是过滤器,在某些模块(例如过滤器模块)中定义为:

JS:

angular.module('filters-module', [])
.filter('trustAsResourceUrl', ['$sce', function($sce) {
return function(val) {
return $sce.trustAsResourceUrl(val);
};
}])

并且您可以在应用程序的所有 iframe 和其他嵌入式项目中使用此过滤器。此过滤器将处理您需要信任的所有 url,只需添加过滤器即可。

关于javascript - iframe 内的 AngularJS ng-src,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24163152/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com