浏览器打印--兼容IE、局部打印

<!DOCTYPE html>
<html>

    <head>
        <meta charset="UTF-8">
        <meta http-equiv='Content-Type' content='text/html; charset=utf-8'>
        <title></title>
        <style type="text/css">
            @media print {
                .noprint {
                    display: none;
                }
            }
        </style>
    </head>

    <body>
        <OBJECT id="WebBrowser" height="0" width="0" classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2" name="wb"></OBJECT>
        <div>
            <button id="printBtn" class="noprint">打印</button>
        </div>
        <ul>
            <li>111</li>
            <li>222</li>
            <li>333</li>
            <li>444</li>
            <li>555</li>
            <li>666</li>
            <li>777</li>
            <li>888</li>
            <li>999</li>
            <li>000</li>
            <li>111</li>
            <li>222</li>
            <li>333</li>
        </ul>
        <script>
            /** execwb() 参数以及功能:(wb:OBJECT元素的name属性值)
             * wb.execwb(1, 1) //打开
             * wb.ExecWB(2, 1); //关闭现在所有的IE窗口,并打开一个新窗口
             * wb.ExecWB(4, 1) //;保存网页
             * wb.ExecWB(6, 1) //打印
             * wb.ExecWB(7, 1) //打印预览
             * wb.ExecWB(8, 1) //打印页面设置
             * wb.ExecWB(10, 1) //查看页面属性
             * wb.ExecWB(15, 1) //好像是撤销,有待确认
             * wb.ExecWB(17, 1) //全选
             * wb.ExecWB(22, 1) //刷新
             * wb.ExecWB(45, 1) //关闭窗体无提示
             */

            /**
             * IE浏览器打印时,OBJECT元素是必须要有的,OBJECT元素可以放在页面中任何位置
             * 局部打印时,不需要打印的元素,添加noprint这个class
             */
            var $printBtn = document.getElementById('printBtn');
            $printBtn.onclick = function() {
                if(!!window.ActiveXObject || "ActiveXObject" in window) {
                    wb.execwb(7, 1); // 调用IE的打印预览
                    //document.getElementById("WebBrowser").ExecWB(7,1)
                    // 报错:找不到成员;
                    // 原因: 是internet安全选项中自定义级别那里需要启用没有标记为安全的ActiveX控件,  也就是IE安全的设置
                    // 解决: 方法1:在IE浏览器菜单栏依次选择“工具”→“Internet选项”→“安全”→“受信任的站点”→“站点”,在“站点”窗口打开后,输入 *,“添加”
                    //       方法2:在IE浏览器菜单栏依次选择“工具”→“Internet选项”→“安全”→“internet”→“自定义级别”,启用ActiveX控件
                } else {
                    window.print();
                }
            }
            /**
             * 如果是在iframe中,需要打印(布局),调用该方法
             */
            function printEntrust() {
                var aa = window.parent.document.getElementsByName("mainFrame")[0]; // 获取当前所在的iframe元素
                var printStr = "<html><head><meta http-equiv='Content-Type' content='text/html; charset=utf-8'></head><body>";
                var content = "";
                var older = document.body.innerHTML; // iframe原来的内容
                var str = document.getElementById('printContent').innerHTML; //获取需要打印的页面元素
                content = content + str;
                var $height = $(aa).prop('scrollHeight'); // iframe原来的高度
                printStr = printStr + content + "</body></html>";
                if(!!window.ActiveXObject || "ActiveXObject" in window) {
                    $('#printContent').removeClass('hidden').addClass('show');
                    aa.setAttribute("scrolling", "no"); // 防止打印预览时出现滚动条
                    var $h = $('#printContent').prop('scrollHeight'); // 获取打印页面的实际高度
                    $(aa).css({
                        'height': $h + 'px'
                    }); // 根据内容的高度设置iframe的高度
                    // document.getElementById("WebBrowser1").execWB(6,1); // 调用IE的打印
                    document.getElementById("WebBrowser1").execWB(7, 1); // 调用IE的打印预览
                    $('#printContent').removeClass('show').addClass('hidden'); // 隐藏打印内容
                    $(aa).css({
                        'height': $height + 'px'
                    }); // 恢复iframe原来的高度
                } else {
                    document.body.innerHTML = printStr; //构建新网页
                    window.print(); //打印刚才新建的网页
                    document.body.innerHTML = older; //将网页还原
                    return false;
                }
            }
        </script>
    </body>

</html>

猜你喜欢

转载自blog.csdn.net/qq_32526373/article/details/79992404