代码示例j实现浏览器打印功能

2025-05-10 07:45:08 4
  • 收藏
  • 管理
    最近接触到一个新需求,实现打印机打印小票的功能。打的一桌子小票(惭愧),不过也基本满足了业务上的需求,现在分享一下如何实现(好记性不如烂笔头) 先上代码 复制// 布局代码

    //js 部分代码var f = document.getElementById(printf);if(f){ document.getElementById("print_content").removeChild(f);}var printhtml =`

    ${this.ticket.title}

    --------------------------------------

    提货点:${this.ticket.pickUpAddress}

    商品名称:${this.ticket.commodityName}

    下单时间:${this.ticket.paymentTime}

    提货人:${this.ticket.receiver}

    联系电话:${this.ticket.receiverPhone}

    提货码:${this.ticket.pickUpCode}

    提货时间:${this.ticket.submissionTime}

    .

    `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\\\\\\\\";//设置网页打印的页眉页脚为空functionPageSetup_Null(){varWsh=newActiveXObject("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 =`

    ${this.ticket.title}

    ------------------------------------------------

    提货点:${this.ticket.pickUpAddress}

    商品名称:${this.ticket.commodityName}

    下单时间:${this.ticket.paymentTime}

    提货人:${this.ticket.receiver}

    联系电话:${this.ticket.receiverPhone}

    提货码:${this.ticket.pickUpCode}

    提货时间:${this.ticket.submissionTime}

    .

    `}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尝试。 相关学习推荐:javascript视频教程
    上一页:代码详解Vue中key的作用示例 下一页:代理的证书或从属CA
    全部评论(0)