我试图通过JavaScript打印一张Highcharts图表。其中一个要求是打印必须在单独的窗口中完成,这意味着我无法使用Highcharts附带的.print()函数。所以我最终做的是克隆高层容器,然后发送到新窗口。它适用于Chrome,Firefox,IE9/10,但在IE 8中只显示轴。新窗口Highcharts在IE8中不呈现
铬:
IE8:
我发现了一个bug报告有类似的问题Highcharts:https://github.com/highslide-software/highcharts.com/issues/1560
根据报告的问题与我不使用的IE8兼容模式。此问题在IE9/IE10,Chrome或Firefox中不存在。
下面是我用来将标记发送到新窗口的代码。 '/ print'只包含几个重要的CSS文件。我不确定为什么事件处理程序是这样附加的;我只是被告知,这样做是有原因的,没有任何澄清。
var clone = $('#highcharts-demo').clone().get(0);
var params = [
'width='+screen.width,
'height='+screen.height
].join(',');
var printWindow = window.open('/print', 'Print', params);
printWindow[printWindow.addEventListener ? 'addEventListener' : 'attachEvent'](
(printWindow.attachEvent ? 'on' : '') + 'load', function() {
printWindow.document.body.innerHTML += clone.outerHTML;
printWindow.document.close();
printWindow.focus();
}, false);
这就是它的感谢! – Sathariel