我試圖通過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