From f03281ac6cddd6742841f67d484eb5fca0871c4a Mon Sep 17 00:00:00 2001 From: roymondchen Date: Tue, 29 Mar 2022 12:44:48 +0800 Subject: [PATCH] =?UTF-8?q?fix(stage):=20render=20destroy=E5=90=8E?= =?UTF-8?q?=E7=A7=BB=E9=99=A4load=E4=BA=8B=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/stage/src/StageRender.ts | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/packages/stage/src/StageRender.ts b/packages/stage/src/StageRender.ts index fc4d92a0..c31d45eb 100644 --- a/packages/stage/src/StageRender.ts +++ b/packages/stage/src/StageRender.ts @@ -52,15 +52,7 @@ export default class StageRender extends EventEmitter { height: 100%; `; - this.iframe.onload = async () => { - this.emit('onload'); - if (this.render) { - const el = await this.render(this.core); - if (el) { - this.iframe?.contentDocument?.body?.appendChild(el); - } - } - }; + this.iframe.addEventListener('load', this.loadHandler); } public getMagicApi = () => ({ @@ -113,9 +105,20 @@ export default class StageRender extends EventEmitter { * 销毁实例 */ public destroy(): void { + this.iframe?.removeEventListener('load', this.loadHandler); this.contentWindow = null; this.iframe?.remove(); this.iframe = undefined; this.removeAllListeners(); } + + private loadHandler = async () => { + this.emit('onload'); + if (this.render) { + const el = await this.render(this.core); + if (el) { + this.iframe?.contentDocument?.body?.appendChild(el); + } + } + }; }