最近测试老是提bug说是有50%的概率打印出空白页,之前我也一直发现偶尔会出现这个问题,只是一直没有发现原因。
今天终于下定决心找到问题所在。开始吧!
查看源码一行行debug,发现问题只可能出现在这一段。
setTimeout( function() {
(opt.operaSupport && $.browser.opera ? tab : $iframe[0].contentWindow).print();
if(tab){
tab.close();
}
}, 1000);
这里应该是等待为了等待渲染完成,所以延迟了1秒加载打印。但是很多情况下会发现渲染时间超过1秒的情况,这种时候就会打印出空白页面。
查询网上的资料之后,想了个办法解决 了这个问题。
var printObj=opt.operaSupport && $.browser.opera ? tab : $iframe[0].contentWindow;
printObj.addEventListener('load', function() {
printObj.print();
if (tab) { tab.close(); }
});
我是js小白,如果有问题,欢迎指正。