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