2015-01-26 68 views
1

在我的網站上,我想創建用於打印各種圖像的按鈕。我知道這可以使用Javascript來實現。經過一番研究,我寫到:使用Javascript在Chrome中打印圖像

<script type="text/javascript"> 
var pwin; 
function printImg(imgSrc) { 
    pwin = window.open(imgSrc, "_blank"); 
    setTimeout("pwin.print()", 20); 
} 
</script> 
... 
<input class="printAndSolve" type="submit" value="Print" 
onclick="printImg('original.png')"> 

這會打開新標籤中的圖像,但不顯示打印對話框。 我做錯了什麼?

進一步研究產生了一種不同的方法:

<script type="text/javascript"> 
function printImg(imgSrc) { 
    var printWindow = window.open('', 'Print 
    Window','height=400,width=600'); 
    printWindow.document.write('<html><head><title>Print Window</title>'); 
    printWindow.document.write('</head><body ><img src=\''); 
    printWindow.document.write(imgSrc); 
    printWindow.document.write('\' /></body></html>'); 
    printWindow.document.close(); 
    printWindow.onload = function() { printWindow.print(); }; 
} 
</script> 
... 
<input class="printAndSolve" type="submit" value="Print" 
onclick="printImg('original.png')"> 

這給了我一個奇怪的結果。當試圖打印一個小圖像時,打印對話框應該彈出。但是當我嘗試打印更大的圖像時(覆蓋整張A4紙),對話框不會彈出。究竟是怎麼回事?

考慮到我希望達到的目標,你們認爲最好的方法是什麼?

在此先感謝!

編輯

這實際上似乎是一個瀏覽器相關的問題。上面的代碼在Firefox和IE中運行得非常好。我遇到此問題是因爲我正在Chrome中開發網站。顯然,Chrome在顯示打印窗口之前不會等待加載我的窗口內容。其他瀏覽器似乎都先等待內容加載,然後顯示打印窗口。 我當然嘗試使用setTimeout函數,但沒有成功。 因此,我的問題是,任何人都可以向我展示在Chrome中打印圖像的解決方法嗎?

解決

這個網站被證明是金:http://nice-tutorials.blogspot.se/2014/01/image-printing-problem-in-google-chrome.html

問題解決了!

回答

0

的解決方案是在onLoad事件添加到身體標記:

printWindow.document.write('</head><body onLoad="self.print(); self.close()"><img src=\'');