我有一个只支持多个内部链接的幻灯片播放应用程序。
HTML
<iframe width="100%" id="iframeSlide" height="100%" #iframe frameBorder="0" [src]="urlSafe"></iframe>
TS代码
current.urlSafe = current.sanitizer.bypassSecurityTrustResourceUrl(current.slideUrls[current.index]);
slideUrls
是一个包含内部链接列表的数组,但是当新url设置为current.urlSafe
时,旧url没有调用ngOnDestroy
函数来释放资源。
我尝试设置current.urlSafe = "about:blank";
或
var frame = document.getElementById("iframeSlide"),
frameDoc = frame.contentDocument || frame.contentWindow.document;
frameDoc.removeChild(frameDoc.documentElement);
但是没有调用ngOnDestroy
函数。在内部页面,我使用setInterval函数,所以需要去ngOnDestroy
清除Interval
,没有它的许多请求调用在setInterval
。
我引用的链接
https://web.dev/detached-window-memory-leaks/
如何清除所有间隔?
改变iframe src就相当于在浏览器地址栏中导航到一个新的url。浏览器自己清除了顶层JS/HTML资源(这里是
)ngOnDestroy
会在你删除应用中的组件或服务时出现,但不会在刷新时出现