HTML指定打印页面内容

当然了,我只是这个做个记录了。不喜勿喷。

看了,之前一些博主写的,如下:

function doPrint() {
                        bdhtml = window.document.body.innerHTML;
                        sprnstr = "<!--startprint-->";
                        eprnstr = "<!--endprint-->";
                        prnhtml = bdhtml.substr(bdhtml.indexOf(sprnstr) + 17);
                        prnhtml = prnhtml.substring(0, prnhtml.indexOf(eprnstr));
                        window.document.body.innerHTML = prnhtml;
                        window.print();
                        window.close();
                        window.document.body.innerHTML = prnhtml;
                    }

大概的意思了,就是利用两个备注标签<!--startprint-->和<!--endprint-->

然后再找到这两个标签的位置,获取两个标签之间的内容。然后把整个页面都给先替换成获取到

标签里面的内容,在进行打印。然后把这个页面给关闭,在将源码给换回来。那么打印之后下次打开就又是原来的界面了。

这样了,其实也没错。但是我这边需要了不要关闭当前页面,于是我就把windo.close();给去掉了。

结果我发现原有界面上的,事件了什么都给不生效了........................

百度解释到是因为innerHTML();相当于重新建立一个新的dom了。自然之前的dom里面的事件什么的都没了.............

所以就给稍稍改了一下用了appendChild,如下:

//打印
 function doPrint() {
						var bdhtml = window.document.body.innerHTML;
                        var sprnstr = "<!--startprint-->";
                        var eprnstr = "<!--endprint-->";
                        var prnhtml = bdhtml.substr(bdhtml.indexOf(sprnstr) + 17);
                        prnhtml = prnhtml.substring(0, prnhtml.indexOf(eprnstr));
                        //创建一个虚节点,在把里面的东西给替换掉。(不然用不了appendChild方法)
                       	var div = window.document.createElement("div");
                       	div.id="dycym";
     					div.innerHTML =prnhtml;
     	                window.document.body.appendChild(div);
     	                //打印之前先让之前的页面给隐藏掉,后面在放出来。
     	                $("#Form1").css('display','none');
                        window.print();
                        $("#Form1").css('display','');
                        //删掉我们之前添加的打印页面
                        $("#dycym").remove(); 
                    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值