Js 实现局部打印功能

  1. 当前页面

     var bodyHtml = window.document.body.innerHTML;
     window.document.body.innerHTML = printHtml;//printHtml为当前需要打印的div的内容
     window.print();
     window.document.body.innerHTML = bodyHtml;
    
     缺点: (1)移除页面内容再插入需要打印页面内容,页面会有一个大的跳动
     (2)页面事件效果会丢失
  2. iframe 打印

        function myPrint(){
         var el = "<div>Content should be print!</div>";
         var iframe = document.createElement('IFRAME');
         iframe.setAttribute('style', 'position:absolute;width:0px;height:0px;left:-500px;top:-500px;');
         document.body.appendChild(iframe);
         var doc = iframe.contentWindow.document;
         doc.write(el);
         var pageStyle="html,body{height:100%}img{max-width:100%;max-height:100%;margin:0 auto}";
         var style=document.createElement("style");
         style.innerText= pageStyle;
         doc.getElementsByTagName("head")[0].appendChild(style)
         doc.close();
         iframe.contentWindow.focus();
         iframe.contentWindow.print();

    )

缺点: 需要将所有style拷贝到iframe

  1. media query 实现

        @media print {
       .no-need-print-block
       {
         display: none;
       } 
     }

    缺点: 一块多个地方复用的模块不好customize

转载于:https://www.cnblogs.com/weilantiankong/p/11193339.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值