Сброс Iframe к тому же источнику - PullRequest
0 голосов
/ 03 июня 2019

Я занимаюсь разработкой веб-приложения на Angular 8.

Я использую Iframe для отображения одной из наших интранет-страниц. Для отображения разных сайтов я создал сервис, который содержит текущий источник и имеет функцию обновления этого источника.

export class ViewService {
  src: string;

  constructor() {}

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

Свойство iframes src привязано к свойству src службы

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

Теперь я хочу, чтобы можно было вернуться к начальной странице после навигации внутри фрейма. Но так как я установил бы свойство src службы в ту же строку, в которой он уже находится, это не вызывает перезагрузку iframe. Кроме того, поскольку страница не имеет того же происхождения, у меня нет возможности узнать, какой URL на самом деле имеет содержание iframe.

Я думал о сбросе источника, установив его в пустую строку

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

но, похоже, это тоже не вызывает обновления.

Только если я установлю задержку (даже если она составляет всего 1 мс) после установки src на пустую строку, 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 работает без проблем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...