当前位置: 首页 > 知识库问答 >
问题:

如何在angular应用程序中订阅iframe位置更改?

陈俊誉
2023-03-14

我有一个带有iframe元素的组件。我将src属性设置为原始url,用户可以从那里导航。我想订阅用户导航到的新位置,假设它们在同一个域上。在非angular解决方案中,他们描述了在iframe上放置onload事件,但是在angular中在iframe上放置(load)事件似乎只在初始化时触发一次,而不是像我希望的那样,每次在iframe内有导航事件时都触发一次。我做了一个非常丑陋的解决方案:

    Observable
      .interval(200)
      .map(x => this.iframe.nativeElement.contentWindow.location.pathname)
      .distinctUntilChanged()
      .subscribe(url => {
        console.log(url);
      });

但至少可以说,这似乎是次优的。有没有不涉及投票的更好的解决方案?

共有1个答案

沈高峻
2023-03-14

最后,我不需要这样做,因为我的iframe中的代码知道url何时更改,我可以控制它。因此,在url更改事件上,我可以向iframe父级发送消息。所以这比投票好得多,这是真正的实时。

 类似资料:
  • 我的创业公司获得了Azure BizSpark订阅。我刚刚创建了一个API应用程序和应用程序服务计划。我们公司位于北欧,但API服务和应用程序服务计划的位置均位于“美国中南部”。创建API应用程序时,我没有看到任何指定位置的选项。我也看不到任何选项,以改变位置,现在该应用程序已创建。这是BizSpark订阅的限制还是我可以改变位置?

  • 需要将Azure资源(PaaS)从一个位置(北欧)移动到另一个位置(西欧)。 是否可以使用Azure运营模式Pipeline, IaC?有什么障碍或挑战吗? Azure资源: 应用程序服务 应用程序服务计划 应用程序洞察 可用性测试 数据库(PaaS) 现有: 订阅:A 地点:北欧 目标: 订阅:B 地点:西欧

  • 问题内容: 我想阅读我的申请。如何找到其文件名? 问题答案: 如何找到其文件名? 您已经拥有了。也许您想找到绝对文件位置?您可以为此使用。 或者,如果您想直接获得它,请使用。

  • 请帮助我订阅更改的变量。我做了简单的微调。服务中的微调状态(真|假)存储: 在组件模板中,我通过条件显示微调器: 在组件中,我尝试订阅服务isVisibleSpinner变量中的更改: 但控制台输出遵循错误消息: 类型“boolean”不可分配给类型“Observable”。

  • 我有两个应用程序,第一个应用程序启动ActiveMQ代理(https://spring.io/guides/gs/messaging-jms/ ). 在第二个应用程序,我想从第一个应用程序的主题。 我如何在不启动ActiveMQ服务器的情况下执行此操作? 可能的解决办法: 服务器应用程序项目 客户端应用程序项目 这是正确的方法吗? 用这个解决了: http://javasampleapproach

  • 问题内容: 假设您有一个简单的单页应用程序-无论它是使用Backbone,Angular,Ember还是其他任何方式编写的。 遵循路线时,如何告诉屏幕阅读器我们已经更改了“页面”? 在经典应用程序中,当我导航至屏幕阅读器时,显然可以检测到页面更改,然后按预期进行重新阅读。 但是,在我的Backbone应用程序中,当我遵循一条路线时,无法确定如何触发“重新读取”​​。我已尝试触发某个在某处看到的事件