无法使用 angularJS 将 URL 加载到 iframe

Posted

技术标签:

【中文标题】无法使用 angularJS 将 URL 加载到 iframe【英文标题】:Can't load URL into iframe with angularJS 【发布时间】:2015-01-15 09:17:59 【问题描述】:

使用 AngularJS,我试图将“myLink”URL 地址加载到另一个 html 中的 iframe。 data.No 是我从另一个地方提取的 ID 并且工作正常(获取我需要的 url 的 ID)

在控制器中——“TransactionsCtrl”:

$scope.myLink = "http://"the real url"+ data.No +"&file="+ data.No +"&contract_id="+ data.No;
console.log($scope.myLink);

在 HTML 中:

<div ng-controller= "TransactionsCtrl">
    <iframe ng-src="myLink"></iframe>
</div>

我得到的只是这个:

Error: [$interpolate:interr] Can't interpolate: myLink
Error: [$sce:insecurl] Blocked loading resource from url not allowed by $sceDelegate policy.  URL

当我对 url 进行硬编码时,它工作正常。

【问题讨论】:

【参考方案1】:

它对我有用:你可以用 js 代码把它写成一个函数

$scope.trustSrc = function(src) 
  return $sce.trustAsResourceUrl(src);

$scope.iframe = src:"http://www.youtube.com/embed/Lx7ycjC8qjE";

并在您的视图中使用它:

 <iframe ng-src="trustSrc(iframe.src)"></iframe>

或者你可以把它写成一个过滤器,比如:

.filter('trusted', function($sce)
return function(url) 
    return $sce.trustAsResourceUrl(url);
;

)

并在视图中使用它:

 <iframe ng-src="iframe.src | trusted"></iframe>

【讨论】:

【参考方案2】:

在你应该使用的控制器中:

   $scope.myLink =  $sce.trustAsResourceUrl(myUrl)

【讨论】:

如果您有一个 url 或一组 url,这很好。如果您需要动态传递它们,因为您必须在控制器中设置它们而不是作为传递变种。虽然这是正确的。以下来自 saghar.fadaei 的答案是使用的解决方案。

以上是关于无法使用 angularJS 将 URL 加载到 iframe的主要内容,如果未能解决你的问题,请参考以下文章

AngularJs - 服务器抛出异常''XMLHttpRequest 无法加载预检的“URL”响应无效(重定向)'

AngularJS + Django:URL 刷新或直接访问未正确加载

使用 AngularJS 发送 GET 请求时无法从 WebStorm IDE 执行“打开”无效 URL

如何将 LiveReload 与 AngularJS 模板 URL 一起使用

AngularJS 路由精分

将 angularjs 控制器拉出到不同的文件中时,如果我的模块没有首先加载怎么办?