首页 > 其他分享 >使用 CSS 如何禁用浏览器打印页面 All In One

使用 CSS 如何禁用浏览器打印页面 All In One

时间:2024-03-03 13:59:46浏览次数:33  
标签:浏览器 打印 afterprint print event CSS 页面

使用 CSS 如何禁用浏览器打印页面 All In One

print.css 禁用 PDF 导出网页

有时,你的网站或应用程序可能希望改善用户在打印内容时的体验。
有几种可能的情况:

  1. 你希望根据纸张的大小和形状调整布局
  2. 你希望使用不同的样式来增强纸上内容的外观。
  3. 你希望使用更高分辨率的图像以获得更好的效果。
  4. 你想调整打印的用户体验,比如在打印开始前呈现一个特殊格式的内容版本。
  5. 你可能还希望管理打印过程的其他情况,但这些都是最常见的场景。
    本文提供了帮助你更好地打印 web 内容的技巧和方法。

CSS media print

<link href="/path/to/print.css" media="print" rel="stylesheet" />

media query

@media print {
  /* 你所有打印的样式都放在这里 */
  #header,
  #footer,
  #nav {
    display: none !important;
  }
}

https://developer.mozilla.org/zh-CN/docs/Web/CSS/CSS_media_queries/Printing

JS 检测打印请求

浏览器发送 beforeprintafterprint 事件,以确定打印何时发生。
你可以用它来调整打印过程中显示的用户界面(例如在打印过程中显示隐藏用户界面元素)。

window.addEventListener("afterprint", () => self.close);

window.addEventListener("beforeprint", () => self.close);

beforeprint 和 afterprint 事件允许页面在打印开始之前更改其内容(例如,也许是移除 banner)然后在打印完成后还原这些更改。
一般来说,你应该更倾向于使用 @media print CSS at 规则,但在某些情况下可能有必要使用这些事件。

addEventListener("beforeprint", (event) => {});
onbeforeprint = (event) => {};

https://developer.mozilla.org/zh-CN/docs/Web/API/Window/beforeprint_event

addEventListener("afterprint", (event) => {});
onafterprint = (event) => {};

https://developer.mozilla.org/zh-CN/docs/Web/API/Window/afterprint_event

iframe 隐藏/移除

如果你想在不打开弹窗的情况下打印外部页面,可以使用隐藏的 <iframe> 元素(参见:HTMLIFrameElement),在用户打印其内容后自动将其移除。

<button id="print_external">打印外部页面!</button>

function setPrint() {
  const closePrint = () => {
    document.body.removeChild(this);
  };
  this.contentWindow.onbeforeunload = closePrint;
  this.contentWindow.onafterprint = closePrint;
  this.contentWindow.print();
}

document.getElementById("print_external").addEventListener("click", () => {
  const hideFrame = document.createElement("iframe");
  hideFrame.onload = setPrint;
  // 隐藏 iframe
  hideFrame.style.display = "none";
  hideFrame.src = "external-page.html";
  document.body.appendChild(hideFrame);
});


demos

bug

  1. 直接打印

image

  1. 空白页面

image

(

标签:浏览器,打印,afterprint,print,event,CSS,页面
From: https://www.cnblogs.com/xgqfrms/p/18049932

相关文章

  • 浏览器 缓存
    2种方法解决图片缓存:方法1:添加代码https://www.cnblogs.com/lgx5/p/15180516.html 方法2:浏览器里面勾上不要缓存。https://juejin.cn/post/7178794675044614203  erwa.cn二娃备忘 ......
  • 探索浏览器录屏Web API 接口的应用前景与限制
    一、浏览器录屏WebAPI接口的优点:简化录屏流程:浏览器录屏WebAPI接口可以直接在网页中调用,无需安装额外的插件或软件,简化了录屏的流程。实时录制与传输:WebAPI接口可以实时录制用户操作并将录屏数据传输到服务器,实现即时的用户行为监测和分析。跨平台兼容性:浏览器录屏W......
  • Taurus.MVC WebMVC 入门开发教程7:部分视图和页面片段(结束篇)
    本系列的目录大纲为:Taurus.MVCWebMVC入门开发教程1:框架下载环境配置与运行Taurus.MVCWebMVC入门开发教程2:一个简单的页面呈现Taurus.MVCWebMVC入门开发教程3:数据绑定ModelTaurus.MVCWebMVC入门开发教程4:数据列表绑定List<Model>Taurus.MVCWebMVC入门开发教程5......
  • 【HarmonyOS】一招教你在竖屏的UIAbility中使用横屏页面
    ​【关键字】鸿蒙应用开发、ArkTS、UIAbility、横屏页面显示 1、写在前面我们在实际的项目开发过程中,可能会遇到这样的需求:在一个手机应用中,A页面是竖屏展示的,点击A页面的某个按钮需要跳转到B页面,但是B页面需要横屏展示,比如查看海报或者表格信息等内容,在HarmonyOS中,在不增加......
  • vue项目引入高德地图报错:Map container div not exist (火狐浏览器不加载地图)
    问题描述:谷歌浏览器正常显示地图,火狐浏览器不加载,并且报错:  Mapcontainerdivnotexist错误代码如下:  修改后代码如下:  参考大佬:https://blog.csdn.net/white_777/article/details/128286558  ......
  • 介绍几个scss 与css 中的新的特性
    介绍几个scss与css中的新的特性css中的@layer。用法如下@layerlow,high;@layerlow{.btn{font-Size:10px;}}@layerhigh{.btn{font-Size:11px;}}@layer{.btn{font-Size:12px;}}.btn{font-Size:1......
  • 支持Flash插件的浏览器
    想必,在如今都不支持flash插件的浏览器的环境下,迫于老项目使用了flash插件,但是又不能更改使用的富文本框架,只能另找支持flash插件的浏览器。如今,你不用找了。在adobe的flash帮助手册里有各种帮助指南,可以参阅下。或在其flash.cn网站下载flash游戏浏览器。其他chrome浏览器支......
  • Docker部署Gitea,以及自定义 Gitea 页面
    首先要先在你的Linux系统上成功安装Docker和DockerCompose。开始配置和部署Gitea:创建git用户。sudouseradd-m-s/bin/bash-U-u1000git配置docker-compose.yml,我这里使用了80端口和MySQL8数据库。version:"3"networks:gitea:external:falseservice......
  • dolphinscheduler管理页面主机host显示IP异常问题
    问题背景:登录dolphinscheduler管理页面,打开监控中心大盘发现IP显示异常,不是自己主机的业务IP问题分析:显示的IP是主机的bond0的IP,不是业务ip所在bond,则需要修改bond配置解决方案:需要将network.interface修改成业务ip所在的bond1网卡登录主机进行ipaddr查看业务IP所在bond......
  • Vue给iframe设置嵌套页面的宽高
    Vue给iframe设置嵌套页面的宽高,代码示例如下:<template><iframeid="iframe":height="scrollHeight":width="scrollWidth"frameborder=0allowfullscreen="true"src="/docs-html/xxx.html"ref="iframe&......