打印 c3.js 图表而不打乱功能

Printing c3.js chart without messing up functionality

我有以下 c3.js 图表:

fiddle

HTML:

<body>
    <div id="chart"></div>
</body>

<input type="button" onclick="printDiv('chart')" value="Print Chart"/>
<script>
 function printDiv(divName){
    var printContents = document.getElementById(divName).innerHTML;
  var originalContents = document.body.innerHTML;

  document.body.innerHTML = printContents;
  window.print();
  document.body.innerHTML = originalContents;
 }
</script>

图表:

blankData=[
  ['data1',0,0,0,0],
  ['data2',0,0,0,0],
  ['data3',0,0,0,0]
]

chartData=[
  ['data1',60,10,4,25],
  ['data2',30,22,5,30],
  ['data3',30,9,4,17]
]

var chart = c3.generate({
    bindto: '#chart',
    size: {
        height: 500,
    },
    data: {
        columns: blankData,
        colors:{
          data1:'#00af50',
          data2:'#F7931E',
          data3: '#FF0000'
        },
        names:{
          data1:'namedata1',
          data2:'namedata2',
          data3:'namedata3'

        },

        type:'bar',

        labels: true,
    },



    tooltip: {
        show: false
    },    
    legend: {
        show: false
    },
    axis: {
        x: {
            type: 'category',
            categories: ['001', '002','003','004'],
             tick: {

             format: function (d) { 
              return "" ; }
            }
        }        
    },
    transition: {
      duration: 2000
    }
});
setTimeout(function () {
    chart.load ({columns: chartData});
 }, 500)

我实现的 "print chart" 按钮执行以下操作:

这很好用,但是,从某种意义上说,我的图表不再是 "dynamic"。请注意,在打印之前,您可以将鼠标悬停在图表的条形图上,它们会改变不透明度。不过,在打印之后,该图或多或少是它曾经的纯粹 HTML 图像。我如何重新实现我的打印功能以确保我的图表得到保留 "alive"?

如有任何帮助,我们将不胜感激。谢谢!

万一有人想知道什么对我最有效:

我刚刚让打印按钮打开一个弹出窗口 window,将图表的 div 对象复制到弹出窗口 window,然后自动启动打印对话框.我还让按钮在打印完成后关闭弹出窗口 window。