使用以下代码,我设法使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()方法的方法?还是其他解决方法?
谢谢!