自己负责的模块需要有个试卷打印的功能,需要将网页特定范围内的内容打印出来,所以选择了jquery.jqprint脚本
用起来也非常简单。
//打印
$("#printPage").jqprint({
debug: false,//如果是true则可以显示iframe查看效果,默认是false
importCSS: true,//true表示引进原来的页面的css,默认是true。
printContainer: true,//表示如果原来选择的对象必须被纳入打印,默认是true。
operaSupport: true///表示如果插件也必须支持歌opera浏览器,默认是true。
});
但是遇到一个问题,就是在页面有很多图片的时候,用谷歌浏览器打印预览的时候,预览的页面不会显示所有的图片,这样打印出来也没有显示图片。
查来查去,只能是jqprint脚本的问题,最后多次测试,发现将脚本里面
setTimeout( function() { (opt.operaSupport && $.browser.opera ? tab : $iframe[0].contentWindow).print(); if (tab) { tab.close(); } }, 1000);
的时间从1000调至3000就会显示所有图片。
虽说找到了原因,程序跑通了,但是原理还是不知道,希望有人能看到这篇随笔来指点一下。
我猜应该是打印预览也是慢慢加载的,如果给的时间多的话,图片在这个时间能加载出来,就会在打印预览时出现。
这个问题还是没有警醒的看,其实设置成3000还是不能应对所有情况。应该按照打印试卷的页数来算,这个计时的时间就是页数×200。这样就足够了
setTimeout(function () { (opt.operaSupport && $.browser.opera ? tab : $iframe[0].contentWindow).print(); if (tab) { tab.close(); } LoadingEnd(); }, pagenumber * 100 > 2000 ? pagenumber * 100 : 2000);