window.print()触发打印并配合@media print样式控制输出效果,需隐藏无关元素、强制分页、适配黑白打印、启用背景色打印,调试推荐PDF预览与媒体模拟。
JavaScript 实现页面打印,核心是调用 window.print(),但真正控制“打出来长什么样”,靠的是 CSS 的 @media print 规则。不写专门的打印样式,浏览器会按屏幕样式直接输出,常出现页眉页脚混乱、内容被截断、无关元素(如按钮、广告)也被印出等问题。
window.print() 触发打印这是最基础的一步,只需一行代码:
window.print();
它会打开系统打印对话框(含预览),用户确认后执行打印。注意:该方法必须由用户手势(如点击)触发,不能在页面加载或异步回调中自动调用,否则现代浏览器会静默拦截。
@media print 定义打印专属样式在 CSS 中写针对打印设备的规则,只在打印时生效,不影响屏幕显示:
break-inside: avoid,后者是新标准,兼容性稍差)background: #fff 或 background-image 显式设置)若需更灵活控制(比如只打印某个区域、动态加水印),可在调用 print() 前操作 DOM:
document.body.innerHTML = document.getElementById('print-section').innerHTML;,再 print();但注意会丢失样式和脚本——更稳妥做法是用一个隐藏的 注入内容和样式,再对 iframe 调用 print()
@media print 中用伪元素 + content 配合 counter() 实现页码;时间戳建议在打印前用 JS 插入到 DOM 中(如 打印时间:2025-06-15),并在 @media print 中设为可见Chrome / Edge 支持“另存为 PDF”作为打印输出,这是最方便的调试方式: