问题:

  使用window.print();打印页面,将不需要的数据隐藏,将需要的数据显示,打印完成之后将刚才隐藏的数据还原,显示的数据隐藏,

谷歌浏览器、部分ie能一气呵成,  火狐浏览器以及少数ie浏览器出现了:执行到window.print();时后面的js还未开始执行,类似与alert的阻塞,要等到用户点完页面弹出的打印框才会执行,这样导致隐藏的数据没有显示,显示的数据没有隐藏,

解决办法:

  网上找了很多种方法,

  https://segmentfault.com/a/1190000006236133

  这个链接里有写使用ifrme作为打印的页面

<table align="center" class="ml70"><tbody><tr><td colspan="8"><div align="center"><b><span >不打印的内容部分//</span></b></div><div></tr></tbody></table><a href="#" onclick="javascript:history.back(1); event.returnValue=false"><< 返回</a><br /><!--startprint--><br /><table align="center" class="ml70"><tbody><tr><td colspan="8"><div align="center"><b><span >//要打印的内容部分//</span></b></div><div></tr></tbody></table><!--endprint--><input type="button" value="打印" onClick="printPage()" /><iframe id="printf" src="" width="0" height="0" frameborder="0"></iframe>
<script type="text/javascript">  function printPage() {  //获取当前页的html代码  var bodyhtml = window.document.body.innerHTML;  //设置打印开始区域、结束区域  var startFlag = "<!--startprint-->";  var endFlag = "<!--endprint-->";  // 要打印的部分  var printhtml = bodyhtml.substring(bodyhtml.indexOf(startFlag),   bodyhtml.indexOf(endFlag));  // 生成并打印ifrme  var f = document.getElementById('printf'); f.contentDocument.write(printhtml);f.contentDocument.close();f.contentWindow.print();}  </script>

但是使用这个方法,在ie浏览器下, f.contentWindow.print();打印的是iframe的父页面,

如何解决ie中iframe的打印呢, 继续找!

https://yq.aliyun.com/ziliao/69150

ie情况下  printf 为打印的iframe的id

window.frames['printf'].focus();
window.frames['printf'].print();

但是使用这个方法在火狐浏览器中直接保错

  window.frames['printf'].print();

综合上面两种方法,进行了一个合并

var f = document.getElementById('printf'); f.contentDocument.write(printhtml);f.contentDocument.close();
window.frames['printf'].focus();
try{window.frames['printf'].print();  
}catch{f.contentWindow.print();
}

参考:https://www.cnblogs.com/xianyubuxian/p/8718235.html

使用window.print()打印局部页面,ifrme打印ie报错相关推荐

  1. window.print()实现局部打印及遇到的问题

    window.print()实现局部打印及遇到的问题 公司的一个后台管理系统需要实现打印一个签收单,我选择用window.print()实现打印,但是遇到了一些问题:需求实现的效果: 打印时需要隐藏顶 ...

  2. 使用window.print()后,未关闭打印页面,原网页不能操作

    使用window.print()后,未关闭打印页面,原网页不能操作,此时可以试着用window.location.reload()重新加载页面解决问题. 转载于:https://www.cnblogs ...

  3. 【js监听报错】页面监听js报错问题

    <html> <head> <script type="text/javascript">// 页面监听js报错问题 οnerrοr=handl ...

  4. vue项目使用浏览器打印局部页面

    项目需求是生成个报告输出为pdf和word格式下载到本地.本来使用jspdf实现的领导看了说字体太糊.检查发现因为那本来就是张图片映射到pad上的大小改变了所以字体啥的丢帧了. 然后改成用window ...

  5. window.print()方法,如何获取打印弹框显示状态

    <button (click)="print()" >打印</button>private isPrint: boolean = false;public ...

  6. framework层加了打印信息打印intent传递的数据,报错:ActivityManager: Activity Manager Crash. UID:10074 PID:7444 TRANS:3

    最近有个项目,需要跳转到第三方应用展示影片详情页,通过打印信息,可以找到要跳转的activity的名称或action,但是利用这个activity跳转之后,该详情页的背景图始终显示不出来,是我少传了参 ...

  7. 后台返回数据打印是[object object]的,报错:SyntaxError: JSON.parse: expected property name or ‘}‘ at line 1 column

    今天基于这个问题纠结了一下午,导致这个问题的坑也是挺深的,查找问题最好是从这条数据的存储开始查找 问题1:先确定后台接收数据后存储到数据库里有没有自动转义特殊字符,比如 原始数据是:[{"u ...

  8. requirejs页面刷新失效js报错问题解决方案

    插件名称:requirejs 问题:页面刷新后模块载入失效,js报错 下载地址:http://www.chtml.cn/topic/show/10816 问题原因: requirejs是先加载本身在加 ...

  9. Angular多个页面引入同一个组件报错The Component ‘MyComponentComponent‘ is declared by more than one NgModule怎么办?

    有一天,我写了一个自信满满的自定义组件myComponent,在多个页面import使用了,结果控制台给我来这个 我特么裤子都脱了,你给我来这个提示是几个意思 仔细一看 The Component ' ...

最新文章

  1. android theme material,Android Studio 换主题(Material Theme..)
  2. eureka的惊群效应
  3. Visual Studio 2010 and .NET 4 RTM中文版发布
  4. yolov5 ncnn
  5. php的常量和变量,php的常量和变量
  6. 定位--position属性
  7. 双非本科上岸北大,复试成绩专业第一!
  8. 啊哈C语言 第八章 【代码】【习题答案】
  9. html 如何清除历史记录,如何删除网页历史记录?
  10. phpmywind 手机站多语言版本
  11. 二级考试c语言中 星号与字母 题型总结,计算机等级C语言上机考试编程题分类总结.doc...
  12. python收益风险点图_AAVE当前风险与收益是否有偏差?如何评估DeFi投资组合?
  13. 网络相册(只能本地)
  14. 第一行代码天气预报接口更改后JSON键值对的问题
  15. python实现离散点图画法
  16. 异常中的异常——借助系统异常处理特例实现匪夷所思的漏洞利用
  17. 红旗linux 硬件,红旗软硬件兼容性查询 | 中科红旗
  18. 快速上手CH340N电路设计(CH340N USB转串口模块 USB Type-C接口 CH340系列芯片讲解)
  19. android群英传 自定义滑动view,《Android群英传》读书笔记
  20. CdSe/ZnTe Ⅱ型核壳量子点/核壳型功能/SiC碳化硅量子点的合成

热门文章

  1. pytorch中torch.nn.utils.rnn相关sequence的pad和pack操作
  2. 测量学matlab使用心得,测量学实习个人心得体会
  3. Xshell保持会话连接
  4. 看好友抖音显示服务器,抖音怎么看访客记录 抖音7天访客记录查看方法入口
  5. android笑话大全接口,笑话大全——图片
  6. HDFS的写入流程及副本复制策略
  7. 股票交易日志7 12.22
  8. 分析:有效提升博客人气的十种方法
  9. Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day7,java相关技术库
  10. 行业洞见丨Discord 狂奔的背后与网易云信「圈组」的长期主义