在IE

2013-10-09 63 views
0

我有一個圖像,這是一個轉換成圖像畫布打印與JS或jQuery的圖像(I用於canvas2image.js插件來做到這一點):在IE

function draw_voucher_img() 
{ 
    var canvas = $("#canvas_voucher")[0]; 
    var voucher = canvas.toDataURL(); 
    $("#voucher_img").attr("src", voucher); 
} 

然後在一個按鈕的點擊欲打印該圖像。我使用jquery.printElement.min.js插件來做到這一點:

$("#div_print_voucher").click(function() { 
    print_voucher(); 
}); 


function print_voucher() 
{ 
    $("#voucher_img").printElement(); 
} 

它可以在除... Internet Explorer的每一個瀏覽器。在資源管理器中,它不打印圖像,而是打印頁面的其餘部分。有沒有其他的方式來使它在IE中工作?

**更新**

是否有任何其他的方法來打印使用JS或jQuery的一個元素?如果存在,那麼也許有可能以某種方式檢查用戶的瀏覽器是否爲IE:如果是:使用一種打印方法,如果不是,則使用上述功能。

* 沒關係,問題就解決了 *

+0

雖然我很高興你解決你的問題,這將是很好,如果你可以在這裏分享的解決方案。這樣,如果有人遇到同樣的問題,你的答案將是有用的。您可以在下面發佈您的答案。 – Ibu

+0

@Ibu只是做到了這一點:) – Igal

+0

@BrianDHall你是對的,只是發佈了答案。 :) – Igal

回答

1

也許不是最完美的解決方案,但它爲我工作。我發現a piece of code用於打印HTML5畫布 - 它將畫布轉換爲圖像,在主體中創建僅具有<img...>標籤的彈出窗口,將轉換後的圖像設置爲源,彈出打印對話框,一旦打印開始,它將關閉那彈出窗口。所以現在我只需要檢查瀏覽器是IE還是其他的。如果是IE瀏覽器 - 使用上面提到的代碼,如果它是其他瀏覽器 - 使用問題中提到的功能。因此,完整的代碼現在看起來是這樣的:

function print_voucher() 
{ 
var ua = navigator.userAgent; 
if(ua.search(/MSIE/) > 0) 
{ 
    var dataUrl = document.getElementById('canvas_voucher').toDataURL(); 
    var windowContent = '<!DOCTYPE html>'; 
    windowContent += '<html>' 
    windowContent += '<head><title>Print voucher</title></head>'; 
    windowContent += '<body>' 
    windowContent += '<img src="' + dataUrl + '">'; 
    windowContent += '</body>'; 
    windowContent += '</html>'; 
    var printWin = window.open('','','width=788,height=499'); 
    printWin.document.open(); 
    printWin.document.write(windowContent); 
    printWin.document.close(); 
    printWin.focus(); 
    printWin.print(); 
    printWin.close(); 
} else { 
    $("#voucher_img").printElement(); 
} 

}