vue-print-nb-element & vue-print-nb 两款插件类似:
在电脑端调用打印机正常
Huawei MatePad Air端调用打印机失效:
失效表现:
原来设置了只打印弹框中的表格部分内容,实际上却将整个浏览器tab页进行打印。
取巧的做法的思路:
- 获取浏览器的代理
华为的平板可以切换电脑模式:
电脑版的显示,看出来唯一的区别是,我本机的Chrome是123的版本,华为是99的版本。
判断Chrome的版本99 或是 华为浏览器,打印区域弹窗全屏
created() { const nu = navigator.userAgent const pattern = new RegExp("Chrome" + "[ \\/]([\\d]+)"); const match = nu.match(pattern); if (match && match.length > 1) { const detectedVersion = parseInt(match[1], 10); if (detectedVersion<123 || nu.indexOf('HuaweiBrowser/') > -1) { this.fullscreen = true } } },
隐藏元素
3.1 隐藏两个按钮
css:@media print { @page { size: A4 portrait; } .no_print { display: none; } }
3.2 隐藏弹窗的X
:show-close="!params.fullscreen"
全屏+隐藏右上角关闭X, 只剩下关闭按钮
为了避免用户点击浏览器的回退,平板上关闭了打印机直接关闭弹窗printObj: { id: "xx", extraCss: "xx", extraHead: 'xx', closeCallback (vue) { if (vue.fullscreen) { vue.show = false; } } }
看效果:
hahahah,我真是省时省力的小天才(bushi)啊
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。