1、展示描述
1)当前问题:悬浮框显示后,点击图标外的其他区域,有时候浮框会消失,有时候不会消失,体验不好
2)改成:悬浮框显示后,点击图标外的其他区域,浮框必须消失
2、优化代码
在组件挂载时添加一个全局的 pointerup 事件监听器,当组件销毁前移除该监听器。具体如下:
- 组件挂载时:添加全局 pointerup 事件监听器,调用 handleDocumentClick 方法。
- 组件销毁前:移除全局 pointerup 事件监听器。
mounted() {
document.addEventListener("pointerup", this.handleDocumentClick);
},
beforeDestroy() {
document.removeEventListener("pointerup", this.handleDocumentClick);
},
这段代码的功能是处理点击事件,判断点击是否发生在图表容器外部。如果是,则隐藏图表提示信息。具体逻辑如下:
- 获取图表容器元素
- 判断点击目标是否在图表容器外
- 如果在外部且图表对象存在,则隐藏提示信息
handleDocumentClick(event) {
const chartContainer = this.$refs.chartContainer;
if (chartContainer && !chartContainer.contains(event.target)) {
console.log("Click outside the chart", "myChart:", this.myChart);
if (this.myChart) {
this.myChart.dispatchAction({
type: "hideTip",
});
}
}
},
通过上述方法优化,悬浮框显示后,点击图标外的其他区域,浮框就会消失