2013-08-03 46 views
-1

我试图通过JavaScript打印一张Highcharts图表。其中一个要求是打印必须在单独的窗口中完成,这意味着我无法使用Highcharts附带的.print()函数。所以我最终做的是克隆高层容器,然后发送到新窗口。它适用于Chrome,Firefox,IE9/10,但在IE 8中只显示轴。新窗口Highcharts在IE8中不呈现

铬:

Chrome Highcharts

IE8:

IE8 Highcharts

我发现了一个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); 

回答

1

我觉得问题是与jQuery.clone()。我不知道为什么,很遗憾。不过这里工作液:

var clone = document.getElementById('highcharts-demo'); 

及更高版本:

printWindow.document.body.innerHTML += clone.innerHTML; 
+0

这就是它的感谢! – Sathariel

0

注意,有一个SVG印刷错误在IE浏览器,它可以“固定”通过下面的CSS:

svg { position: absolute !important }

不知道如何相关的是,对你的具体问题,但这个问题上来时,我正在寻找一个解决方案,以我自己的问题和CSS是修复。

相关问题