当前位置:首页 > JavaScript

js实现局部打印

2026-01-30 15:23:51JavaScript

使用window.print()实现局部打印

在JavaScript中,可以通过window.print()方法触发浏览器的打印功能。要实现局部打印,需要隐藏不需要打印的内容,只显示目标区域。

function printDiv(divId) {
  const printContents = document.getElementById(divId).innerHTML;
  const originalContents = document.body.innerHTML;

  document.body.innerHTML = printContents;
  window.print();
  document.body.innerHTML = originalContents;
}

使用CSS媒体查询控制打印样式

通过CSS的@media print可以定义打印时的样式,隐藏不需要打印的元素。

@media print {
  body * {
    visibility: hidden;
  }
  #print-area, #print-area * {
    visibility: visible;
  }
  #print-area {
    position: absolute;
    left: 0;
    top: 0;
  }
}

创建iframe实现打印

另一种方法是创建一个iframe,将要打印的内容放入iframe中,然后调用iframe的打印功能。

js实现局部打印

function printDiv(divId) {
  const printContent = document.getElementById(divId).innerHTML;
  const frame = document.createElement('iframe');

  frame.style.display = 'none';
  document.body.appendChild(frame);

  const frameDoc = frame.contentWindow || frame.contentDocument;
  if (frameDoc.document) frameDoc = frameDoc.document;

  frameDoc.document.open();
  frameDoc.document.write('<html><head><title>打印</title></head><body>');
  frameDoc.document.write(printContent);
  frameDoc.document.write('</body></html>');
  frameDoc.document.close();

  setTimeout(() => {
    frame.contentWindow.focus();
    frame.contentWindow.print();
    document.body.removeChild(frame);
  }, 500);
}

使用打印样式表

可以创建一个专门的打印样式表,在打印时只显示需要的内容。

<link rel="stylesheet" type="text/css" media="print" href="print.css">

在print.css中定义哪些元素需要显示或隐藏。

js实现局部打印

注意事项

恢复页面内容时要注意事件监听器可能会丢失,使用innerHTML会破坏原有DOM元素的事件绑定。

对于复杂的打印需求,建议使用专门的打印库如Print.js,它提供了更丰富的打印功能和对PDF的支持。

<script src="https://printjs-4de6.kxcdn.com/print.min.js"></script>
<link rel="stylesheet" href="https://printjs-4de6.kxcdn.com/print.min.css">

标签: 局部js
分享给朋友:

相关文章

js 实现vue模板

js 实现vue模板

实现 Vue 模板的 JavaScript 方法 通过原生 JavaScript 可以实现类似 Vue 的模板渲染功能,主要包括数据绑定、指令处理和模板解析。以下是核心实现思路: 数据绑定与响应式…

js实现全屏

js实现全屏

实现全屏的基本方法 使用JavaScript实现全屏功能主要依赖Element.requestFullscreen()方法。现代浏览器均支持此API,但不同浏览器可能需要添加前缀。 // 触发全屏…

js实现复制功能

js实现复制功能

使用 document.execCommand 方法 这种方法适用于较旧的浏览器,但在现代浏览器中可能被逐步淘汰。通过创建一个临时的 textarea 元素,将文本内容放入其中,然后执行复制命令。…

js实现游标

js实现游标

使用JavaScript实现游标 在JavaScript中,可以通过操作DOM元素的cursor样式属性来实现自定义游标效果。以下是几种常见的实现方法: 修改默认鼠标指针样式 通过CSS的curso…

js实现交换

js实现交换

交换变量的方法 在JavaScript中,交换两个变量的值有多种方法。以下是常见的几种实现方式: 使用临时变量 通过引入一个临时变量来存储其中一个变量的值,实现交换: let a = 1; le…

js实现正交

js实现正交

正交的概念 正交在数学和计算机科学中通常指两个向量垂直或线性无关。在编程中,正交性常被用于设计模块化、低耦合的系统。 向量正交判断 判断两个向量是否正交可以通过点积是否为0来实现: functio…