From 61e22c33ce44867282c4fd475a335bb8b3488cc6 Mon Sep 17 00:00:00 2001 From: plainheart Date: Wed, 1 Nov 2023 19:04:22 +0800 Subject: [PATCH 1/3] fix(tooltip): use `remove` rather than `parentNode.removeChild` to fix potential NPE when its parent node doesn't exists. (apache/echarts#19248) --- src/component/tooltip/TooltipHTMLContent.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/component/tooltip/TooltipHTMLContent.ts b/src/component/tooltip/TooltipHTMLContent.ts index da1960835e..cc6ef51c57 100644 --- a/src/component/tooltip/TooltipHTMLContent.ts +++ b/src/component/tooltip/TooltipHTMLContent.ts @@ -520,7 +520,7 @@ class TooltipHTMLContent { } dispose() { - this.el.parentNode.removeChild(this.el); + this.el.remove(); this.el = this._container = null; } From ab4372f8e7db8656ca5c43e6a90ba7bb40f212d4 Mon Sep 17 00:00:00 2001 From: plainheart Date: Wed, 1 Nov 2023 19:27:32 +0800 Subject: [PATCH 2/3] fix(tooltip): clearTimeout when disposing --- src/component/tooltip/TooltipHTMLContent.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/component/tooltip/TooltipHTMLContent.ts b/src/component/tooltip/TooltipHTMLContent.ts index cc6ef51c57..817ec1d604 100644 --- a/src/component/tooltip/TooltipHTMLContent.ts +++ b/src/component/tooltip/TooltipHTMLContent.ts @@ -520,6 +520,8 @@ class TooltipHTMLContent { } dispose() { + clearTimeout(this._hideTimeout); + clearTimeout(this._longHideTimeout); this.el.remove(); this.el = this._container = null; } From 0d29cd898f550d7d6451af4f4f56881082188941 Mon Sep 17 00:00:00 2001 From: plainheart Date: Wed, 1 Nov 2023 23:27:03 +0800 Subject: [PATCH 3/3] fix(tooltip): still use `parentNode.removeChild` to reserve support for IE. --- src/component/tooltip/TooltipHTMLContent.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/component/tooltip/TooltipHTMLContent.ts b/src/component/tooltip/TooltipHTMLContent.ts index 817ec1d604..7e08b53f98 100644 --- a/src/component/tooltip/TooltipHTMLContent.ts +++ b/src/component/tooltip/TooltipHTMLContent.ts @@ -522,7 +522,9 @@ class TooltipHTMLContent { dispose() { clearTimeout(this._hideTimeout); clearTimeout(this._longHideTimeout); - this.el.remove(); + + const parentNode = this.el.parentNode; + parentNode && parentNode.removeChild(this.el); this.el = this._container = null; }