js 打印某一区域div,新开页面,保留样式

	//  项目用的ts, 如果不是用ts  变量正常命名就行
      const newWindow:any = window.open("打印窗口","_blank")
      const printhtml:any = window.document.getElementById('printid');
      if(newWindow.document.readyState=="complete"){
      
        const stylArr:Array<any> = [];
        Object.assign(stylArr,window.document.getElementsByTagName('style'));
        
        newWindow.document.write(printhtml.innerHTML);
        for(let i = 0; i < stylArr.length; i++){
          const style = document.createElement('style');
          style.innerHTML = stylArr[i].innerHTML;
          newWindow.document.getElementsByTagName("head")[0].appendChild(style);
        }
      }
      newWindow.print();
      newWindow.close();

发现一个体验更好的写法:

      <iframe id="iframe1" style="display: none"></iframe>
      <div id="printid" >打印内容</div>

      const iframe:any = document.getElementById("iframe1");//获取iframe的window对象
      const iwindow:any = iframe.contentWindow;
      // iwindow.document.body.innerText = "";//先清空iframe原先的内容
      const printhtml:any = window.document.getElementById('printid');
      if(iwindow.document.readyState=="complete"){
        const stylArr:Array<any> = [];
        Object.assign(stylArr,window.document.getElementsByTagName('style'));
        // 内容加上去
        iwindow.document.write(printhtml.innerHTML);        
        // 样式加上去
        for(let i = 0; i < stylArr.length; i++){
          const style = document.createElement('style');
          style.innerHTML = stylArr[i].innerHTML;
          iwindow.document.getElementsByTagName("head")[0].appendChild(style);
        }
      }
      iwindow.print();
      iwindow.close();
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值