Я занимаюсь разработкой веб-приложения на 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
работает без проблем.