用javascript源码打印页面

在用javascript源码打印页面很简单只需要使用window.print();一句代码就好了,但是在预览时你就会发现这有多坑。
页面上居然有网址,有<title></title>标签里的东西。
我今天终于发现了一个好办法:
1.打印时既然一定要显示这些东西,我们隐藏不了,那不如换一种思路,想像一下如果title标签里面是空白的,再大胆的想象一下,网址也是空白的,那么打印出来的页面不就漂亮了。
空白?blank?一提到这个词我大脑的第一反应就是a链接时打开的新页面,不妨我们也试一下这种方法:
我们可以把需要打印的东东放在id=div1的标签里,然后我们写一个打印函数:

function doPrint() {
  window.print();
  var win = window.open('');
  win.document.write(oCon.outerHTML);
  win.print();
  win.close();
}
通过实践,发现这个问题就被我们如此华丽丽的解决了!!
2.当然为了更加美观,我们也可以在样式里添加如下代码:

@media print {
  selector{  //此处写你需要打印时实现的样式。
  ......
  }
}
3.当然了也有的人是只想打印页面中的一部分,那也可通过如下代码实现:
<!--startprint-->
.......
需要打印的代码
....
<!--endprint-->

js部分

function doPrint() {
bdhtml=window.document.body.innerHTML; //获得body标签内的全部html代码
sprnstr="<!--startprint-->"; //声明一个字符串,用于表示打印的起始位置
eprnstr="<!--endprint-->"; //标示打印的结束位置
prnhtml=bdhtml.substr(bdhtml.indexOf(sprnstr)+17); //查找打印的起始字符串并加上17,因为<!--startprint-->的长度为17,所以要加17,这样打印时不会把标示打印出来
prnhtml=prnhtml.substring(0,prnhtml.indexOf(eprnstr)); //和上边的意思差不多
window.document.body.innerHTML=prnhtml; //通过window对象得到body对象并将当前窗体的内容设置为要打印起始标示符和结束标示符之间的内容,这样打印出来就只有需要的部分,而其他没用的信息都不会有的
window.print();
}
ps:比如我要打印的是<div>hello</div>,则它与标记标签的写法是<!--startprint--><div>hello</div><!--endprint-->,中间不能有空格,因为上面运行代码时用字符串的剪切过程,可能会出错。

在用javascript源码打印页面很简单只需要使用window.print();一句代码就好了,但是在预览时你就会发现这有多坑。
页面上居然有网址,有<title></title>标签里的东西。
我今天终于发现了一个好办法:
1.打印时既然一定要显示这些东西,我们隐藏不了,那不如换一种思路,想像一下如果title标签里面是空白的,再大胆的想象一下,网址也是空白的,那么打印出来的页面不就漂亮了。
空白?blank?一提到这个词我大脑的第一反应就是a链接时打开的新页面,不妨我们也试一下这种方法:
我们可以把需要打印的东东放在id=div1的标签里,然后我们写一个打印函数:

function doPrint() {
  window.print();
  var win = window.open('');
  win.document.write(oCon.outerHTML);
  win.print();
  win.close();
}
通过实践,发现这个问题就被我们如此华丽丽的解决了!!
2.当然为了更加美观,我们也可以在样式里添加如下代码:

@media print {
  selector{  //此处写你需要打印时实现的样式。
  ......
  }
}
3.当然了也有的人是只想打印页面中的一部分,那也可通过如下代码实现:
<!--startprint-->
.......
需要打印的代码
....
<!--endprint-->

js部分

function doPrint() {
bdhtml=window.document.body.innerHTML; //获得body标签内的全部html代码
sprnstr="<!--startprint-->"; //声明一个字符串,用于表示打印的起始位置
eprnstr="<!--endprint-->"; //标示打印的结束位置
prnhtml=bdhtml.substr(bdhtml.indexOf(sprnstr)+17); //查找打印的起始字符串并加上17,因为<!--startprint-->的长度为17,所以要加17,这样打印时不会把标示打印出来
prnhtml=prnhtml.substring(0,prnhtml.indexOf(eprnstr)); //和上边的意思差不多
window.document.body.innerHTML=prnhtml; //通过window对象得到body对象并将当前窗体的内容设置为要打印起始标示符和结束标示符之间的内容,这样打印出来就只有需要的部分,而其他没用的信息都不会有的
window.print();
}
ps:比如我要打印的是<div>hello</div>,则它与标记标签的写法是<!--startprint--><div>hello</div><!--endprint-->,中间不能有空格,因为上面运行代码时用字符串的剪切过程,可能会出错。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_陌默

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值