`
butnet
  • 浏览: 84771 次
  • 性别: 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>
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics