vue框架下浏览器打印部分页面功能

vue框架下浏览器打印部分页面功能

业务情景
  • 需要在vue框架下spa应用中,使用浏览器打印下面这种格式的外卖小票
    在这里插入图片描述
方案
  1. 使用 jq 的 jq-print 的框架:npm 库中没有,需要手动引用,且版本更新不方便,故放弃
  2. 使用 window.print() 方法:
    1. 在同一个窗口下,先将 body 和要打印的内容用变量存储,然后将页面的 body 里面的内容替换为要打印的内容,使用打印,然后返回原来 body 内容:
    let doc_body = document.body.innerHTML,
    	printPart = document.query('#some-part').innerHTML;
    document.body.innerHTML = printPart;
    window.print();//只能打印当前页面body里面的全部内容,所以打印之前,要替换body里面的内容
    document.body.innerHTML = doc_body;
    window.location.reload(false);//重新刷新页面的时候会出现首页白屏,用户体验不好
    
    1. 将要打印的内容存为模板字符串,打开一个新的窗口,将新的窗口的 body 部分替换为模板内容,打印,最后关闭窗口:
    let printPart,
    	newTab;
    printPart = `
    	...
    `;//需要打印的模板,需要将样式写为行内样式,或者将样式存为单独的文件,然后在新页面中引用
    newTab = window.open('_blank');
    newTab.document.body.innerHTML = printPart;
    newTab.print();
    newTab.close();
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值