繁体   English   中英

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

[英]How can I subscribe to iframe location changes in an angular app?

我有一个带有iframe元素的组件。 我将src属性设置为原始URL,用户可以从那里导航。 我想订阅用户导航到的新位置,前提是它们位于同一域中。 在非角度解决方案中,他们描述了在iframe上放置onload事件,但是在初始化时以角度将iload加载事件似乎仅被触发一次,而不是每次在iframe中都存在我想要的导航事件。 我提出了一个非常丑陋的解决方案:

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

但这至少可以说是次优的。 有没有不涉及轮询的更好的解决方案吗?

最后,我不需要这样做,因为iframe中的代码知道url何时更改,并且我可以控制它。 因此,在发生网址更改事件时,我可以将Message post传递给iframe父级。 因此,这比轮询更好,它是实时的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM