博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ie 11 打印 iframe 404 降级解决方案
阅读量:5916 次
发布时间:2019-06-19

本文共 1601 字,大约阅读时间需要 5 分钟。

  hot3.png

问题描述:

公司项目遇到一个小难题,需要在iframe页面里打印一个详情展示层,在谷歌,火狐调用window.print()都没有问题,但在实际操作中ie11打印出的内容会报404找不到地址的错误。翻墙搜罗了一下,仿佛是微软的一个bug,目前微软团队已发布了更新(https://support.microsoft.com/en-us/help/4021558/cumulative-security-update-for-internet-explorer-june-13-2017)(https://support.microsoft.com/en-us/help/4032782/a-blank-page-or-404-error-prints-when-you-try-to-print-a-frame-in-ie),但因涉及到安全性问题,老大不让这么解决,并提供了如下解决方案。

解决思路:

一、判断浏览器是否是ie浏览器,如果不是就调用window.print(),如果是则新开一个窗口,将需要打印的内容传入新开的页面。

二、在新开的页面重新调用window.print()即可解决此问题

重点代码如下:

 if (!!window.ActiveXObject || "ActiveXObject" in window) {

        //IE,使用showModalDialog方法打开打印

        var winHight = (window.screen ? screen.availHeight : 700) - 300;//屏幕高 不包括任务栏 -100为了上下方留空居中

        winWidth = 800;//screen.availWidth;//屏幕宽 不包括任务栏
        var pra = $('#eventDetailModal').html();   //传入打印页面的内容
        //returnValue:返回值,这里不需要返回值,仅为了保持父页面禁止
        var returnValue = window.showModalDialog(
            '/web/admin/testPrint.html',
            { html: pra },
            'dialogHeight:' + winHight + 'px;dialogWidth:' + winWidth + 'px;center:yes;status:no;'
        );
        /*
            window.showModalDialog的说明:http://blog.csdn.net/bobwu/article/details/7474703
        */
        //打印窗口关闭后回传的参数
        //alert(returnValue);
    } else {
        //其他浏览器,正常打印
        window.print();
    }

另有一个打印页面testPrint.html用来接收数据及实现ie下打印,它的重点代码如下:

 $(function () {

        var Param = window.dialogArguments;
        if (!Param || !Param.html) {
            //没有获取到详情编号,关闭当前窗口
            alert('没有获取到详情信息,请刷新后重试');
            self.close(); 
        }
        $('body').append(Param.html);     

        //打印本页面

        $('#print').click(function () {        
            window.print();
        });
        //关闭本页面
        $('#closePage').click(function () {
            self.close(); 
        });
    });    

附:

这种解决方法增加了页面复杂度和用户操作,总感觉不太好,希望不久会有更好的解决方案出现。

转载于:https://my.oschina.net/cpWeb/blog/1475277

你可能感兴趣的文章
ArcGIS API for Silverlight 调用GP服务加载等值线图层
查看>>
CentOS系统rsync文件同步 安装配置
查看>>
LogStash配置、使用(三)
查看>>
SpringMVC 学习笔记(二) @RequestMapping、@PathVariable等注解
查看>>
Chrome应用技巧之颜色拾取
查看>>
Linux之通配符
查看>>
ios中摄像头和图片调用
查看>>
Content Provider 基础 之URI
查看>>
ios获取安装的app
查看>>
Visual Studio 2012出现“无法访问T-SQL组件和安装了不兼容伯 DacFx版本”的解决办法...
查看>>
第一个版本
查看>>
JSTL I18N 格式标签库 使用之二_____读取消息资源
查看>>
聊聊NettyConnector的start及shutdown
查看>>
Raffi Krikorian 为“在运行中进行架构重写”提供了指南
查看>>
OneAPM挂牌新三板,续写ITOM新篇章
查看>>
通过源码解析 Node.js 中一个 HTTP 请求到响应的历程
查看>>
做了一点事,学到了一些
查看>>
CodeIgniter的密码处理论
查看>>
深入Mysql - 谈谈我对数据类型的认识
查看>>
Tsuru 1.7.0-rc4 发布,基于 Docker 的 PaaS 框架
查看>>