将iframe重置为同一来源

时间:2019-06-03 09:16:39

标签: angular iframe

我正在用Angular 8开发一个Web应用程序。

我正在使用iframe来显示我们的Intranet页面之一。为了显示不同的站点,我创建了一个服务,其中包含当前源并具有更新该源的功能。

export class ViewService {
  src: string;

  constructor() {}

  showLinkTarget(url: string) {
      this.src = url;
  }
}

iframe的src属性绑定到服务的src属性

<iframe [src]="viewService.src | safe"></iframe>

现在,我希望在iframe中导航后可以跳回到初始页面。但是,由于我会将服务的src属性设置为与它已经完全相同的字符串,因此这不会触发iframe的重新加载。另外,由于该页面的来源不同,因此我目前无法查看iframe内容目前实际包含的网址。

我考虑过通过将源设置为空字符串来重置源

showLinkTarget(url: string) {
    this.src = '';
    this.src = url;
}

但这似乎也不会触发更新。

仅在将src设置为空字符串后强制延迟(即使只是1毫秒),iframe之后也会重新加载。

showLinkTarget(url: string) {
  (async () => {
    this.src = '';
    await this.delay(1);
    this.src = url;
  })();
}

delay(ms: number) {
  return new Promise(resolve => setTimeout(resolve, ms));
}

这种方式行得通,但对我来说似乎有点不客气。有什么好的方法可以做到这一点吗?

将iframe设置为其他src可以正常工作。

0 个答案:

没有答案