用js代码控制打印网页

    有关网页打印,可以使用的方法有:“1.点击鼠标右键,选择打印预览,执行打印;2.按键盘上的[print sc sysrq]按钮”;还有打印当前网页的方法就是,用相关代码来实现,这里用到的是js;其实用js打印网页很简单,最为重要的就是print()这个函数。

    但是简单也不要掉以轻心,不同地方用到,处理方式也需要注意,不然也会得到一些自己不想的结果。

    1.打印整个网页的内容:

    window.print();

    2.打印指定id/class的网页内容:

        var headstr = "<html><head><title></title></head><body>";
        var footstr = "</body>";
        var newstr = document.all.item(printpage).innerHTML;
        var oldstr = document.body.innerHTML;
        document.body.innerHTML = headstr+newstr+footstr;
        window.print();
        document.body.innerHTML = oldstr;
        return false;

    ●  以上方法在本页面有表单时,可能会对数据完整性造成影响,换成下面的方法代替可解决这个问题:

    方案一:

        var divToPrint = document.getElementById("myMreview");
        newWin = window.open();
        newWin.document.write(divToPrint.innerHTML);
        newWin.document.close();
        newWin.focus();
        newWin.print();
        newWin.close();

    方案二:

        bdhtml=window.document.body.innerHTML;//获取当前页的html代码  

        sprnstr="<!--startprint-->";//设置打印开始区域  

        eprnstr="<!--endprint-->";//设置打印结束区域  

        prnhtml=bdhtml.substring(bdhtml.indexOf(sprnstr)+18); //从开始代码向后取html  

        prnhtml=prnhtml.substring(0,prnhtml.indexOf(eprnstr));//从结束代码向前取html  

        window.document.body.innerHTML=prnhtml;  

        window.print();  

        window.document.body.innerHTML=bdhtml;


    >>原因  是因为,前者是在本页面内容替换,相关的数据可能被替换掉了,再来找就找不到了;后者是在新的页面进行打印操作,不影响前一个页面数据。

    3.可以使用jquery插件:

    PrintArea

    jqprint

    Fingerprint

    printpage

    Lodop

    等等...


你可能感兴趣的:(js,代码控制,打印网页)