新窗口Highcharts在IE8中无法渲染

时间:2013-08-03 20:22:46

标签: internet-explorer-8 highcharts

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

铬:

Chrome Highcharts

IE8:

IE8 Highcharts

我发现了一个类似问题的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);

2 个答案:

答案 0 :(得分:1)

我认为问题在于jQuery.clone()。不幸的是,我不知道为什么..但是这里有解决方案:

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

后来:

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

答案 1 :(得分:0)

请注意,IE中存在SVG打印错误,可以修复"通过以下CSS:

svg { position: absolute !important }

不知道这与您的具体问题有多大关系,但是当我在寻找自己的问题的解决方案并且CSS是解决方案时出现了这个问题。