`
butnet
  • 浏览: 89110 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

JS打印多页面

阅读更多
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ page  language="java" contentType="text/html; charset=gb2312" %>
<html>
<head>
</head>
<body>
<iframe id="hiddenFrame" name="hiddenFrame" frameborder="1"   width="0" height="0" style="display: none;"></iframe>
<center><div id="msgDIV">正在读取数据,请等待...</div>
</center>
<script type="text/javascript">
String.prototype.replaceAll  = function(s1,s2){  
    return this.replace(new RegExp(s1,"g"),s2);

   <%
   String paths = request.getParameter("page");
   if(paths==null)
       return;
   String urls[]=paths.split(",");
    %>
    //测试页面
    var paintURL=[<%for(int i=0;i<urls.length;i++){%>"<%=urls[i]%>.jsp"<%=i!=urls.length-1?",":""%><%}%>];
    //每个页面的内容
    var heads = [];
    var bodys = [];
    for(var i=0;i<paintURL.length;i++)
    {
        heads[heads.length]="";
        bodys[bodys.length]="";
        var temptemp=document.createElement("iframe");
        temptemp.setAttribute("id","hiddenFrame"+i);
        temptemp.width="0";
        temptemp.height="0";
        temptemp.style.display="none";
        document.body.appendChild(temptemp);
    }
    //所有页面的头
    var allHead = "" , allBody = "";
    //所有页面的内容
    var allContent = "";
    var xmlHttp ;
    var pageId = 0;
    var isIE = false;
    function createXMLHttpRequest()
    {
           if(window.ActiveXObject)
           {
               xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
               isIE = true;
           }
           else if(window.XMLHttpRequest)
           {
               xmlHttp = new XMLHttpRequest();
               isIE = false;
           }
    }
    function loadHtml(cpageId){
        var head = document.getElementById("hiddenFrame"+cpageId).contentWindow.document.getElementsByTagName("head");
           if(head.length>0){
               heads[cpageId]=head[0].innerHTML;
           }else{
               heads[cpageId]="";
           }
           bodys[cpageId]=document.getElementById("hiddenFrame"+cpageId).contentWindow.document.body.innerHTML;
           bodys[cpageId] = bodys[cpageId].replaceAll("剩余[:]?\s*<[Ii][Nn][Pp][Uu][Tt].*个汉字","");
        pageId=cpageId+1;
        if(pageId<paintURL.length){
            if(!getPage(pageId)){
                if(pageId<paintURL.length){
                    document.getElementById("msgDIV").innerHTML="读取 "+paintURL.length+" 中的第 "+(pageId+1)+" 个页面的数据时失败 <a href='#' onclick='javascript:document.location.reload();'>重试</a>";
                }
            }
        }else{
            document.getElementById("msgDIV").innerHTML="读取数据完毕,正在组装数据";
            allContent="<html><head>"
            allHead="";
            allBody="";
            for(var i=0;i<heads.length;i++){
                allHead+=heads[i];
                if(i!=heads.length-1)
                    allBody+="<p style=\"page-break-after: always;\">";
                if(i==0)
                    allBody+="<OBJECT classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 height=0 id=WB width=0></"+"OBJECT>";
                allBody+=bodys[i];
                if(i==heads.length-1){
                    var jsFilter = [];
                    //去掉checkBox button submit reset
                    var checkboxDisplayNone = "try{var inputs = document.getElementsByTagName(\"input\");for(var i=0;i<inputs.length;i++){if(inputs[i].bgColor!=undefined){inputs[i].bgColor=\"\";}if(inputs[i].backgroundColor!=undefined){inputs[i].backgroundColor=\"\";}if(inputs[i].style!=undefined){if(inputs[i].style!=null){inputs[i].style.backgroundColor=\"\";}}if(inputs[i].onclick!=null)inputs[i].onclick=null;if(inputs[i].type==\"checkbox\"||inputs[i].type==\"button\"||inputs[i].type==\"submit\"||inputs[i].type==\"reset\"){inputs[i].style.display=\"none\";}}}catch(eee){alert(\"异常:\"+eee.message);}";
                    var textareaColor = "try{var inputs = document.getElementsByTagName(\"textArea\");for(var i=0;i<inputs.length;i++){if(inputs[i].bgColor!=undefined){inputs[i].bgColor=\"\";}if(inputs[i].backgroundColor!=undefined){inputs[i].backgroundColor=\"\";}if(inputs[i].style!=undefined){if(inputs[i].style!=null){inputs[i].style.backgroundColor=\"\";}}}}catch(eee){alert(\"异常:\"+eee.message);}";
                    jsFilter[jsFilter.length]=checkboxDisplayNone;
                    jsFilter[jsFilter.length]=textareaColor;
                    //注入脚本
                    allBody+="<script type='text/javascript'>";
                    for(var filterIndex=0;filterIndex<jsFilter.length;filterIndex++){
                        allBody+=jsFilter[filterIndex];
                    }
                    //打印脚本
                    allBody+="try{";
                    if(isIE)
                        allBody+="WB.ExecWB(6,1);";
                    else
                        allBody+="window.print();";
                    allBody+="}catch(Exception){}</"+"script>";
                }
                if(i!=heads.length-1)
                    allBody+="</p>";
            }
            allContent+=allHead;
            allContent+="</head><body>";
            allContent+=allBody;
            allContent+="</body></html>";
            document.getElementById("msgDIV").innerHTML="";
            document.getElementById("msgDIV").height=0;
            document.getElementById("msgDIV").width=0;
            document.getElementById("msgDIV").display="none";
            document.write(allContent);
            document.close();
        }
    }
    function handleStateChange()
    {
        if(xmlHttp.readyState == 4)
        {
               if(xmlHttp.status == 200 || xmlHttp.status == 0)
               {
                   var resHtml;
                   if(isIE){
                       try{
                               resHtml = xmlHttp.responseText;
                           }catch(e){
                           alert(e.name+"\r\n"+e.message);
                           }
                   }else{
                       resHtml = xmlHttp.responseText;
                   }
                   document.getElementById("hiddenFrame"+pageId).contentWindow.document.write(resHtml);
                   var tempBodys=document.getElementById("hiddenFrame"+pageId).contentWindow.document.getElementsByTagName("body");
                   tempBodys[0].onload=null;
                   document.getElementById("hiddenFrame"+pageId).contentWindow.document.close();
                   try
                   {
                       document.getElementById("hiddenFrame"+pageId).contentWindow.Load();
                   }
                   catch(e)
                   {
                      // alert("ERROR!"+paintURL[pageId]+"   "+e.name+ "-----" + e.message);
                   }
                   loadHtml(pageId);
               }else{
                   document.getElementById("msgDIV").innerHTML="读取数据失败";
               }
        }
    }
   
    //取得每一个页面的内容
    //@param pageId 页面在paintURL中的索引
    function getPage(pageId){
        if(paintURL[pageId]==null)
            return false;
        document.getElementById("msgDIV").innerHTML="正在读取 "+paintURL.length+" 中的第 "+(pageId+1)+" 个页面的数据,请等待......";
        if(xmlHttp == null || isIE)
            createXMLHttpRequest();
            if(!isIE)
                xmlHttp.overrideMimeType("text/html;charset=gbk");
           
            xmlHttp.onreadystatechange = handleStateChange;
            xmlHttp.open("GET",paintURL[pageId],true);
            xmlHttp.send(null);
        return true;
    }
   
    //IE中文转换
    function setGBK(data){
        var glbEncode = [];
        gb2utf8_data = data;
        execScript("gb2utf8_data = MidB(gb2utf8_data, 1)", "VBScript");
        var t=escape(gb2utf8_data).replace(/%u/g,"").replace(/(.{2})(.{2})/g,"%$2%$1").replace(/%([A-Z].)%(.{2})/g,"@$1$2");
        t=t.split("@");
        var i=0,j=t.length,k;
        while(++i<j) {
            k=t[i].substring(0,4);
            if(!glbEncode[k]) {
                gb2utf8_char = eval("0x"+k);
                execScript("gb2utf8_char = Chr(gb2utf8_char)", "VBScript");
                glbEncode[k]=escape(gb2utf8_char).substring(1,6);
            }
            t[i]=glbEncode[k]+t[i].substring(4);
        }
        gb2utf8_data = gb2utf8_char = null;
        return unescape(t.join("%"));
    }
    //程序入口
    getPage(0);
</script>
</body>
</html>
分享到:
评论

相关推荐

    用Javascript打印网页指定标签的内容

    用Javascript打印网页指定标签的内容是指在网页上选择指定的标签,然后将其内容导出到另一个页面上,最后进行打印的操作。这种方法可以灵活地控制打印的内容和格式。下面将详细介绍两种方法来实现这个功能。 方法1...

    js打印WEB页面与打印预览

    JS打印WEB页面与打印预览是指在WEB页面中使用JavaScript语言来实现页面的打印和预览功能。以下是实现这个功能的三种方法: 第一种方法:使用CSS隐藏不打印内容 在这个方法中,我们可以使用CSS来隐藏不需要打印的...

    原生JS打印插件之jQuery.EasyPrint.js使用文档

    javascript打印大全;通用;js实现打印的方式;JS怎么实现页面打印呢?JavaScript 实现打印,打印预览,打印设置;JS打印和报表输出;原生js打印插件Print.js;js控制分页打印、打印分页示例;js 打印插件;js使用...

    JS打印页面代码JS打印页面代码

    JS打印页面代码JS打印页面代码JS打印页面代码JS打印页面代码JS打印页面代码JS打印页面代码JS打印页面代码

    利用javascript实现网页打印

    本文将详细介绍如何利用JavaScript来实现在网页上进行打印,包括设置分页和页面布局。 首先,JavaScript提供了一个`window.print()`方法,它是实现网页打印的基础。调用这个方法可以直接打开浏览器的打印对话框,让...

    通过调用 JS 打印图片信息

    总之,通过JavaScript调用打印图片信息是一种实用的前端技术,可以帮助用户更方便地获取和保存网页中的图像内容。同时,理解并掌握如何处理浏览器的默认打印设置,以及如何优化打印体验,是每个前端开发者必备的技能...

    javascript,js打印

    在JavaScript(JS)中,打印功能是通过与浏览器的交互来实现的,允许用户将网页内容或者特定元素发送到打印机。这个过程涉及到一系列的技术和方法,包括DOM操作、CSS样式控制以及利用JavaScript库如jQuery来简化操作...

    网页打印控件JS版

    网页打印控件JS版是一种基于JavaScript技术实现的打印解决方案,主要针对的是网页内容的打印需求。在现代Web应用中,用户可能需要将网页上的部分内容,如订单详情、报告或者文章等,打印出来作为纸质记录。JsPrint...

    js调用iframe实现打印页面内容的方法

    通过创建一个iframe元素,并将其添加到文档中,可以实现在一个隔离的环境中进行打印,这样做的好处是用户可以打印页面的指定区域而不影响当前页面的其他内容。具体步骤如下: 1. 创建一个指定id的div元素作为打印...

    javascript网页打印设置

    总的来说,JavaScript网页打印设置涉及多个方面,包括使用`window.print()`、创建打印样式表、媒体查询、`@page`规则以及事件监听器。通过这些技术,开发者可以创建出满足用户需求、定制化程度高的打印体验。

    Js打印功能,支持局部打印

    "Js打印功能,支持局部打印"这一主题,主要涉及的是JavaScript在网页中实现打印的功能,特别是如何实现对特定区域(局部)的打印。 JavaScript是一种广泛用于网页开发的脚本语言,它可以直接在用户的浏览器上运行,...

    js打印设置页边距

    在JavaScript中实现对打印页面的定制化设置,如页边距、页眉和页脚的配置,是一项进阶技能,尤其对于需要精确控制打印输出的Web应用而言至关重要。本文将深入探讨如何使用JavaScript来调整打印时的页边距,设置或...

    手机网页打印,wap打印,手机打印,H5打印,H5手机打印,H5截屏,js 截屏,手机网页截屏

    本文将深入探讨“手机网页打印”、“WAP打印”、“手机打印”、“H5打印”以及相关的“H5手机打印”技术,并重点介绍如何实现手机网页的截屏功能,包括“JS截屏”。 首先,让我们了解这些概念。手机网页打印是指...

    js打印当前网页

    本文将深入探讨如何使用JavaScript实现对当前网页的打印,这不仅包括简单的打印整个页面,还涉及到选择性地打印页面的特定部分。 #### 一、基本原理与方法 JavaScript提供了一个内置的方法`window.print()`,它会...

    js打印Web页面

    // 打印页面设置 wb.execCommand('PrintSetup', true, null); } function printPreview() { // 打印页面预览 wb.execCommand('PrintPreview', true, null); } function printIt() { if (/* 用户确认打印 */) ...

    工具-打印:js打印插件

    1. **页面部分打印**:传统的浏览器打印功能会打印整个网页,但很多时候用户只需要打印页面的一部分,如某个表格或特定的段落。JS打印插件可以做到这一点,通过选区或者定义CSS类来确定要打印的内容。 2. **兼容性*...

    JS打印报表控件

    JavaScript(简称JS)是一种轻量级的脚本语言,广泛应用于网页和网络应用开发,尤其在客户端渲染和交互方面有着显著的优势。"JS打印报表控件"是专门为JavaScript设计的一种工具,它允许开发者在Web应用中实现报表的...

    js 打印插件

    JavaScript打印插件是一种用于网页打印和预览的技术,它基于JavaScript语言,允许用户在不离开当前页面的情况下进行打印操作。这种技术广泛应用于各种浏览器环境中,包括IE、Firefox和Chrome等主流浏览器,为用户...

    jQueryPrint.js打印网页

    jQueryPrint.js是一款基于jQuery的轻量级插件,专门用于实现网页打印功能。它允许开发者在不使用浏览器内置打印对话框的情况下,定制化地选择打印的内容,提高用户体验并优化打印流程。这款插件的核心特性是能够精准...

Global site tag (gtag.js) - Google Analytics