时间:2021-05-26
最近接触到一个新需求,实现打印机打印小票的功能。打的一桌子小票(惭愧),不过也基本满足了业务上的需求,现在分享一下如何实现(好记性不如烂笔头)
先上代码
// 布局代码<divid="print"> <divid="print_content"></div></div>//js 部分代码var f = document.getElementById('printf'); if (f) { document.getElementById("print_content").removeChild(f); } var printhtml = ` <div style="font-size:12px;margin-left: -6px;"> <p style="margin-left:40px;">${this.ticket.title}</p> <p>--------------------------------------</p> <p>提货点:${this.ticket.pickUpAddress}</p> <p>商品名称:${this.ticket.commodityName}</p> <p>下单时间:${this.ticket.paymentTime}</p> <p>提货人:${this.ticket.receiver}</p> <p>联系电话:${this.ticket.receiverPhone}</p> <p>提货码:${this.ticket.pickUpCode}</p> <p>提货时间:${this.ticket.submissionTime}</p> <p style="color:#FFFFFF">.</p> </div>` if (!!window.ActiveXObject || "ActiveXObject" in window) { // 针对IE进行适配 var HKEY_Root, HKEY_Path, HKEY_Key; HKEY_Root = "HKEY_CURRENT_USER"; HKEY_Path = "\\Software\\Microsoft\\Internet Explorer\\PageSetup\\"; //设置网页打印的页眉页脚为空 function PageSetup_Null() { var Wsh = new ActiveXObject("WScript.Shell"); HKEY_Key = "header"; Wsh.RegWrite(HKEY_Root + HKEY_Path + HKEY_Key, ""); HKEY_Key = "footer"; Wsh.RegWrite(HKEY_Root + HKEY_Path + HKEY_Key, ""); HKEY_Key = "margin_left" Wsh.RegWrite(HKEY_Root + HKEY_Path + HKEY_Key, "0"); //键值设定--左边边界 HKEY_Key = "margin_top" Wsh.RegWrite(HKEY_Root + HKEY_Path + HKEY_Key, "0"); //键值设定--上边边界 HKEY_Key = "margin_right" Wsh.RegWrite(HKEY_Root + HKEY_Path + HKEY_Key, "0"); //键值设定--右边边界 HKEY_Key = "margin_bottom" Wsh.RegWrite(HKEY_Root + HKEY_Path + HKEY_Key, "0"); //键值设定--下边边界 } printhtml = ` <div style="font-size:12px;font-weight: 800;height:150px;width:300px"> <p style="margin-left:35px">${this.ticket.title}</p> <p>------------------------------------------------</p> <p>提货点:${this.ticket.pickUpAddress}</p> <p>商品名称:${this.ticket.commodityName}</p> <p>下单时间:${this.ticket.paymentTime}</p> <p>提货人:${this.ticket.receiver}</p> <p>联系电话:${this.ticket.receiverPhone}</p> <p>提货码:${this.ticket.pickUpCode}</p> <p>提货时间:${this.ticket.submissionTime}</p> <p style="color:#FFFFFF;font-weight: 100;">.</p> </div>` } var iframe = document.createElement('iframe'); iframe.id = 'printf'; iframe.style.width = '0'; iframe.style.height = '0'; iframe.style.border = "none"; document.getElementById("print_content").appendChild(iframe); setTimeout(() => { iframe.contentDocument.write(printhtml); iframe.contentDocument.close(); iframe.contentWindow.focus(); iframe.contentWindow.print(); }, 100)因为要求不能把打印的数据显示在页面上,所以通过iframe的方式去实现。单纯的截取字符串重新赋值body内容能进行打印却把打印的内容展现在页面中了,所以不行。
打印针对IE的浏览器进行了一定程度的调整,IE打印要做特定的处理,详见上面判断代码。打印内容通过模板字符串加内联样式去实现。满足了基本需求。
是否应该也通过截取页面字符串的方式去做可能比较浪费性能些,为什么这么说?因为样式在打印的小票上有一定程度的偏差,修了东墙破了西墙,只能采取相对的方式取舍。如果这种写法不满足,可以采取截取字符串写class尝试。
以上就是js实现浏览器打印功能的示例代码的详细内容,更多关于js 浏览器打印的资料请关注其它相关文章!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
目前正在做浏览器端采用JS方式实现打印这么一个功能,JS打印实现的方法很多,但是兼容各个浏览器实现打印预览的功能有些棘手,现将实现的内容及遇到的问题记录下来,希
js实现上传图片预览功能思路是获取上传图片本地路径,再加载到页面中实现上传预览HTML代码实现功能的js代码//获取图片路劲的方法,兼容多种浏览器,通过crea
这两天在做Web前端时,遇到需求通过js实现文本复制的功能。先不考虑浏览器的兼容性,看看各浏览器对复制功能的支持情况:1、IE浏览器,解决方法有三种,代码如下:
JS获取浏览器信息复制代码代码如下:浏览器代码名称:navigator.appCodeName浏览器名称:navigator.appName浏览器版本号:nav
js关闭浏览器窗口js关闭浏览器窗口,不弹出提示框。支持ie6+,火狐,谷歌等浏览器。复制代码代码如下:functioncloseWin(){window.op