window.print()是BOM中window对象的内置方法,用于触发浏览器打印预览;它无参数、无返回值,需用户主动触发,配合@media print可控制打印样式,并注意iframe及动态内容渲染时机。

在 JavaScript 中,BOM(Browser Object Model)提供了一个简单直接的方法触发浏览器打印预览:调用 window.print()。
print() 的基本用法
window.print() 是 BOM 中 window 对象的内置方法,执行后会立即唤起当前页面(或 iframe 内容)的打印对话框(即打印预览界面)。它不接受参数,也不返回值。
- 该操作由用户主动触发更稳妥(如点击按钮),避免被浏览器弹出拦截或静默拒绝
- 调用后页面不会跳转或刷新,只是打开系统级打印 UI
- 实际打印内容取决于当前文档的可见 DOM,但可通过 CSS 媒体查询
@media print控制样式
推荐的触发方式(带按钮示例)
不要在页面加载时自动调用 print(),应在用户明确意图下执行:
<button onclick="window.print()">打印本页</button>
或用事件监听器写法:
立即学习“Java免费学习笔记(深入)”;
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
document.getElementById('printBtn').addEventListener('click', () => {
window.print();
});
配合 print CSS 提升输出效果
浏览器默认会打印所有可见内容,但常需隐藏导航栏、广告、按钮等非正文元素。可在样式表中添加:
@media print {
.no-print, header, footer, .sidebar, #printBtn {
display: none !important;
}
body {
font-size: 12pt;
color: #000;
}
}
给要隐藏的元素加上 class="no-print" 即可统一控制。
注意 iframe 和子窗口的打印范围
window.print() 默认打印**当前上下文的 document**:
- 若在主页面调用 → 打印整个主页面
- 若在 iframe 内的脚本中调用 → 只打印该 iframe 的内容
- 若在
window.open()打开的新窗口中调用 → 打印该新窗口的 document
如需打印指定 iframe,可先获取其 contentWindow 后调用:
const iframe = document.getElementById('myIframe');
iframe.contentWindow.print();
不复杂但容易忽略:确保目标内容已渲染完成再调用 print,动态生成的内容建议加微任务等待(如 setTimeout(() => window.print(), 0) 或 queueMicrotask),避免截空。


















