在我的網站上,我想創建用於打印各種圖像的按鈕。我知道這可以使用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
問題解決了!