Получение iframe в веб-компоненте Angular 7 для обновления в Internet Explorer - PullRequest
0 голосов
/ 15 января 2019

Я создавал угловое приложение, которое загружает экран «предварительного просмотра», содержащий вторую веб-страницу, встроенную в iframe. Когда в приложение вносятся изменения, у меня есть требование обновить iFrame, чтобы отобразить изменения. В любом браузере, кроме Internet Explorer, iFrame будет перезагружаться без кэширования содержимого. В IE11 iframe будет загружать источник из кэша. Я попробовал два метода, чтобы обновить iframe (из компонента, содержащего iFrame):

Шаблон HTML:

<div>
  <iframe *ngIf="iFrameUrl" id="preview-Iframe" [src]="iFrameUrl" #iframe></iframe>
</div>

Первая попытка:

this.iframe.nativeElement.location.reload(true); //iframe being a ViewChild ElementRef

Вторая попытка:

this.iframeSrcUrl = this.iframeSrcUrl; //iframe source changed to same url

Также пробовал:

this.iframeSrcUrl = this.iframeSrcUrl + '&uid=' + Guid.newGuid();

Ничто из этого не похоже на работу. Это возможно? Есть ли способ заставить iFrame игнорировать кеш?

1 Ответ

0 голосов
/ 15 января 2019

Одна довольно уродливая уловка, которую я использовал ранее, чтобы заставить кеши браузера вызывать перезагрузку, заключается в том, чтобы включить в мой запрос фиктивный параметр URL следующим образом:

this.iframeSrcUrl = this.iframeSrcUrl + "?dummyParam=<incremental_variable>";

Если вы изменяете incremental_variable каждый раз, когда хотите перезагрузить iFrame, кэш будет думать, что что-то изменилось, и это приведет к перезагрузке.

...