上个礼拜接到这样一个需求,要求点一次打印,打印出三张。
思路:
1. print.js
2. 打印机的开发者工具
3. JS一把梭哈
之前做研究生毕业时候搞过print.js和print.vue,确实可以实现多张打印(因为这些库带有浏览器插件),但是我不想引入包,简单功能用JS一把梭哈就行了。
先把要打印的页面获取innerHTML,直接累加多次:
for(var i = 1; i < ${printNumber}; i++){
document.body.innerHTML+=temp;
}
这边使用了ES6的模板字符串,当时是为了复用组件,打印的参数动态传进去。
过程中还遇到一些问题,比如“静默打印”,不弹浏览器的打印窗,直接一键打印。查阅了很多资料,据说直接JS打印的话,绕不开窗口,因为这是浏览器功能。
这时候其实应该使用打印机提供的开发者工具,是可以实现静默打印的。但是敏捷开发,能用就行。(狗头)