tampermonkey 使用原生JS打印节点 不使用 jspdf 和 html2canvas等第三方库,带上原始节点的样式
时间: 2024-01-22 20:21:29 浏览: 133
要打印节点并带上原始样式,可以使用 `window.print()` 方法。这个方法会弹出浏览器的打印窗口,用户可以选择打印机并设置打印选项。
要在打印时保留节点的原始样式,需要在 CSS 中使用 `@media print` 媒体查询来定义打印时的样式。具体步骤如下:
1. 定义打印时的样式
在 CSS 文件中,添加以下代码:
```
@media print {
* {
-webkit-print-color-adjust: exact !important; /* Chrome, Safari */
color-adjust: exact !important; /* Firefox */
}
}
```
这个样式会将所有元素的打印样式设置为原始样式。`-webkit-print-color-adjust` 和 `color-adjust` 属性会确保打印时颜色的准确性。
2. 打印节点
在 JavaScript 中,使用 `window.print()` 方法可以打印当前页面。如果只想打印某个节点,可以将其复制到一个新的页面中,然后再打印这个页面。具体步骤如下:
```javascript
// 获取要打印的节点
const nodeToPrint = document.getElementById('node-id');
// 创建一个新页面
const newWindow = window.open('', '_blank');
// 将要打印的节点复制到新页面中
newWindow.document.write(nodeToPrint.outerHTML);
// 打印新页面
newWindow.print();
// 关闭新页面
newWindow.close();
```
这段代码中,`nodeToPrint` 是要打印的节点,可以通过 ID 或其他选择器获取。`window.open()` 方法会创建一个新的浏览器窗口,第一个参数是窗口的 URL,可以留空表示新页面没有 URL。`newWindow.document.write()` 方法会将要打印的节点的 HTML 代码写入新页面中。最后,调用 `newWindow.print()` 方法打印新页面,并调用 `newWindow.close()` 关闭新页面。
这样就可以在打印时保留节点的原始样式了。
阅读全文