作者:疯狂的猿猴 | 来源:互联网 | 2022-12-02 15:30
使用以下代码,我设法使ChartJS在出现打印页面之前在Chrome上正确调整大小;
function beforePrint () {
for (const id in Chart.instances) {
Chart.instances[id].resize()
}
}
if (window.matchMedia) {
let mediaQueryList = window.matchMedia('print')
mediaQueryList.addListener((mql) => {
if (mql.matches) {
beforePrint()
}
})
}
window.Onbeforeprint= beforePrint
不幸的是,此代码不适用于Firefox / IE11 / Edge。在所有浏览器上都正确触发了beforePrint()函数,但看来resize()在打印实际发生之前没有足够的时间来完成大小调整,因此它被切断了。图表应占据页面的100%宽度,但以下是在Edge上发生的情况(仅显示了一半的图表):
有没有办法将打印延迟到调整大小之前?还是一种更早调用resize()方法的方法?或其他解决方法?
谢谢!