Highcharts 12.3版本中为Bootstrap模态框添加自定义元素失败问题求助
Highcharts 12.3版本中为Bootstrap模态框添加自定义元素失败问题求助
嗨,我刚好碰到过类似的Highcharts版本升级坑,给你几个亲测有效的解决方案:
首先你遇到的报错根源是:Highcharts 12.x对导出模块的内部结构做了调整,原来直接可用的exportingGroup属性已经不再对外暴露了,所以调用this.exportingGroup.getBBox()才会找不到对象报错。
下面是具体的修复步骤:
替换导出菜单的访问路径
在12.3版本里,导出汉堡菜单的容器需要通过this.exporting.menuGroup来访问,把你代码里所有的this.exportingGroup替换成这个新路径,这是最直接的修复方式。增加元素就绪判断
因为12.x版本优化了渲染顺序,render事件触发时机可能比导出模块初始化更早,建议在代码开头加个判断,避免在元素未就绪时调用方法报错:if (!this.exporting || !this.exporting.menuGroup) return;调整后的完整代码示例
把这些修改整合后,你的代码应该是这样的:chart.update({ chart: { events: { render() { // 先确认导出菜单容器已初始化完成 if (!this.exporting || !this.exporting.menuGroup) return; const { x, y, width } = this.exporting.menuGroup.getBBox(); if (!this.customText) { this.customText = this.renderer.text('Info', x - width - 15, y + 15) .add() .css({ color: this.title.styles.color, cursor: 'pointer' }) .on('click', () => $('#TestChart').modal('show')); } else { this.customText.attr({ x: x - width - 15, y: y + 15 }); } } } } });备选方案:通过菜单按钮直接定位
如果上面的方法还是有问题,你可以直接获取导出汉堡按钮本身的位置来计算,代码片段如下:render() { if (!this.exporting || !this.exporting.menuButton) return; const { x, y, width } = this.exporting.menuButton.getBBox(); // 后续定位逻辑保持一致,用这个x、y计算Info文字的位置即可 }
这些调整应该能让你的"Info"文字重新正常显示并触发Bootstrap模态框,我之前升级到12.2版本时也遇到过几乎一样的问题,用第一种方法就顺利解决了。
内容来源于stack exchange
相关产品推荐
相关产品推荐

