window.print()前端实现打印功能

方法介绍

window.print()方法用于打印当前窗口的内容。
默认打印页面中body里的所有内容。
调用 print() 方法会产生一个打印预览弹框,让用户可以设置打印配置。


1. 打印方法

1.1 打印当前窗口内容

示例demo如下:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>window.print()打印测试</title>
</head>
<script>
  function doPrint() {
    window.print()
  }
</script>
<body>
<button onclick="doPrint()">打印</button>
<div style="width: 300px; height: 100px; border: 1px solid black">
  打印内容区域
</div>
</body>
</html>

打印demo示例效果图


1.2 打印指定区域内容

1.2.1 方式1:截取当前页面需要打印的内容

示例demo如下:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>window.print()打印测试</title>
</head>
<script>
  function printpage() {
    let oldStr = window.document.body.innerHTML; // 获取body的内容
    let start = "<!--startprint-->"; // 开始打印标识, 17个字符
    let end = "<!--endprint-->"; // 结束打印标识
    let newStr = oldStr.substr(oldStr.indexOf(start) + 17); // 截取开始打印标识之后的内容
    newStr = newStr.substring(0, newStr.indexOf(end)); // 截取开始打印标识和结束打印标识之间的内容
    window.document.body.innerHTML = newStr; // 把需要打印的指定内容赋给body
    window.print(); // 调用浏览器的打印功能打印指定区域
    window.document.body.innerHTML = oldStr; // body替换为原来的内容
  }
</script>
<body>
	<input type="button" value="打印此页面" onclick="printpage()"/>
	<!--startprint-->
	<div id="printContent">打印内容</div>
	<!--endprint-->
</body>
</html>

在这里插入图片描述
在这里插入图片描述

注: 该种方式会修改当前窗口的显示内容,比如上述示例代码中的打印按钮,显示打印预览窗口时,浏览器页面上打印按钮会消失。

1.2.2 方式2:打印页面指定的元素区域内容
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>window.print()打印测试</title>
</head>
<script>
    function printpage() {
      let newstr = document.getElementById("printContent").innerHTML;
      let oldstr = document.body.innerHTML;
      document.body.innerHTML = newstr;
      window.print();
      document.body.innerHTML = oldstr;
    }
  </script>
<body>
  <input type="button" value="打印此页面" onclick="printpage()" />
  <div id="printContent" style="width: 300px; height: 100px; border: 1px solid black">
  打印内容区域
  </div>
</body>
</html>

注: 该种方式,也会修改当前窗口的内容。

上述两种打印方法会将页面的元素内容改变,在项目中,有时不允许修改当前窗口的内容,可以使用window.open()方法打开一个新的浏览器窗口。


2. 打印样式

<style type="text/css" media="print">
   // 打印样式
</style>

3. 去除浏览器默认页眉页脚

<style type="text/css" media="print">
  @media print {
    @page {
      margin: 0;
    }
    body {
      margin: 1cm; // 此处样式根据实际需要进行设置
    }
  }
</style>

参考文档:

  1. window.print() 前端实现网页打印详解

  2. Window 对象 | 菜鸟教程


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值