【问题标题】:Load specific div in iframe from external site in AngularJs从AngularJs中的外部站点加载iframe中的特定div
【发布时间】:2014-10-21 03:00:26
【问题描述】:

问题问题 -

如何将外部网站的特定 div 加载到 iframe 中?我知道同源政策和外部站点属于我。我将如何在 AngularJs 中做到这一点。

我找了这个,但大多数答案都只在 jQuery 中。

感谢您的帮助

更新 1

让我更具体一点。例如,如果您使用 iframe,它可以让您访问所有内容。但我只想要这个外部 URL 的特定 DIV。

<iframe style="border: 0" width="800" height="600" frameborder="0" scrolling="no" src="http://localhost:8888/">

【问题讨论】:

标签: javascript angularjs


【解决方案1】:

通常,盲目而轻率地使用 jQuery 不会很好地与 Angular 配合使用。这与其说是因为 jQuery - 这个库,还不如说是因为 Angular 和 jQuery 促进了不同的编程范式。

不过,jQuery 是一个工具箱,jQuery.load() 就是一个这样的工具。

在我看来,让它与 Angular 一起工作的最佳方法是创建一个使用 jQuery.load() 的指令:

.directive("load", function($compile){
  return {
    restrict: "A",
    scope: true,
    link: function(scope, elem, attrs){

      attrs.$observe('load', function(newValue){
        elem.load(newValue, null, function(){

          // compile the newly imported div
          $compile(elem.contents())(scope);

          // need to force $digest, since this is outside of Angular digest cycle
          scope.$digest();
        });
      });
    }
  };
});

那么你可以像这样使用它:

<div load="foo.html #id"></div>

或者,

<div load="{{urlWithId}}"></div>

一定要在Angular之前加载jQuery,否则.load将不会被定义。

Plunker

【讨论】:

  • 感谢您花这么多时间。我会试一试:)。
  • 我试过了,但不知何故
    不起作用,它也没有在控制台中发出任何错误。它对你有用吗?
  • 谢谢:)。最后一个问题-例如,我对外部 URL 进行 ajax 调用并获取网站的内容。这是否有用,因为这是在 HTML 模板中查找 DOM?我在 Angular Controller 中获取所有内容,并且可以看到外部 URL 的 DOM,我现在要做的就是获取特定的表单 ID 并显示在我的页面中。请问您有什么可以帮我的吗?
  • 这听起来像是一个单独的问题,可能需要更多细节。除此之外,您可以按照我的答案中的概念来解决这个案例。
  • 是的,我一直在尝试,但唯一的问题是无法让表单从控制器显示到视图。感谢您的帮助:)
猜你喜欢
  • 1970-01-01
  • 2015-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多