当前位置: 首页 > 面试题库 >

iframe内的AngularJS ng-src

鲜于念
2023-03-14
问题内容

我在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>

我在控制器内部定义:

$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”是过滤器,并且在某些模块(例如filters-
module)中定义为:

JS:

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

而且,您可以在应用程序的所有iframe和其他嵌入式项目中使用此过滤器。仅添加过滤器,此过滤器便会处理您需要信任的所有URL。



 类似资料:
  • 问题内容: 我有以下结构。 并且我有以下JavaScript变量: 如何更改带有变量ID的iframe的内容? 我试过了: 这给了我非常不寻常的回报,它将当前页面的所有内容更改为 Ex:样式,背景等。 如何使用包含的变量设置iframe的内容? 更新#1 :变量的内容如下-> 施加此变量的iframe后我得到这样[通过萤火检查] 需要注意的是它不必须,标签,但上述一个[VAR s]的有标记。 问题

  • 问题内容: 我想使用jQuery在iframe中操纵HTML。 我认为我可以通过将jQuery函数的上下文设置为iframe的文档来做到这一点,例如: 但是,这似乎不起作用。一点检查就可以看出,除非等待iframe加载,否则其中的变量是。但是,在iframe加载时,变量不可访问(我收到-type错误)。 有人知道解决方法吗? 问题答案: 如果来自相同的域,则可以很容易地访问元素

  • 问题内容: 我正在尝试将一些内容插入“空白” iFrame中,但是没有插入任何内容。 HTML: JS: 我正在调用该函数,所以我不明白为什么它没有插入。 问题答案: 您真的不需要jQuery: 如果绝对必须使用jQuery,则应使用 请不要忘记,如果您使用的是jQuery,则需要按如下所示插入DOMReady函数:

  • 问题内容: 我有一个与和。在其中有一个链接,单击该链接应清除的内容。 到目前为止,上述想法的以下实现无效。请帮我解决这个问题。 请注意 ,并且每个都从不同的包含文件加载。 wrapperPage.html header.html: pageBody.html: 问题答案: 尝试使用频道信息

  • 问题内容: 我有一个用于跨域网站的iframe。我想读取iframe的DOM,我相信这是可能的,因为使用检查器,我什至可以修改iframe的DOM。但是,无论尝试哪种方式,我都会遇到相同的原始策略。我想要的只是从iframe加载到本地DOM中的内容。我以为它就像一样简单,但是返回的是空字符串。 我真的希望有一种方法可以这样做,因为我最近几天一直在做的工作是基于这种可行的方法。 谢谢 问题答案: 你

  • 问题内容: 这是我的代码 此方法有效,但是会打印父页面,我如何才能仅打印iframe? 问题答案: 我不希望它能起作用 试一试 和使用 或者尝试好老 如果jQuery无法破解