js打印window.print()图片打印
1. 這里用的是A4紙,設置打印表格屬性(width:100%,height:980px)
2.由于打印可能存在多頁,所以heightt屬性必須嚴格控制。
3.由于自己是先隱藏不需要打印的DIV,然后顯示需要打印的DIV。當需要打印的DIV存在圖片等資源導致加載較慢時。window.print又是異步的,所以存在圖片沒加載完就打印的情況。
解決方案:判斷圖片是否加載完成,加載完成在調用打印。(直接.onload不行,當瀏覽器有 緩存時不會進入方法)
var t_img; // 定時器
var isLoad = true; // 控制變量(判斷圖片是否 加載完成)
isImgLoad(function(){//判斷全部打印圖片加載完成
?? ??? ??? ?window.print();
?? ??? ???? // 加載完成
?? ??? ?});
//判斷圖片加載的函數
function isImgLoad(callback){
??? // 查找所有打印圖,迭代處理
??? $('.printImg').each(function(){
??????? // 找到為0就將isLoad設為false,并退出each
??????? if(this.height === 0){
??????????? isLoad = false;
??????????? return false;
??????? }
??? });
??? // 為true,沒有發現為0的。加載完畢
??? if(isLoad){
??????? clearTimeout(t_img); // 清除定時器
??????? // 回調函數
??????? callback();
??? // 為false,因為找到了沒有加載完成的圖,將調用定時器遞歸
??? }else{
??????? isLoad = true;
??????? t_img = setTimeout(function(){
??????????? isImgLoad(callback); // 遞歸掃描
??????? },500); // 我這里設置的是500毫秒就掃描一次,可以自己調整
??? }
}
總結
以上是生活随笔為你收集整理的js打印window.print()图片打印的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 操作系统期末知识点浓缩总结复习
- 下一篇: UG NX二次开发(C#)-装配-添加组