JS实现页面部分内容打印,兼容IE

JS实现页面部分内容打印,兼容IE


需要打印当前页面部分内容时,我这里采用了 iframe的方式(不考虑替换当前页面内容,再还原的方式,问题较多)

在html代码中添加iframe:

<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>

但是在使用过程中发现,chrome打印预览的页面是没有问题的,但是IE浏览器打印了当前页面,非我们需要的部分内容,即打印的是iframe的父页面

所以对iframe框架进行focus,考虑到火狐浏览器对 **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://blog.csdn.net/lebron3v/article/details/81952594.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值