2013-08-03 43 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是修復。

相關問題