javascript - 现代浏览器是否支持 onbeforeprint/onafterprint HTML 事件?

标签 javascript html css printing compatibility

我正在尝试更新我的页面内容以供打印。我想为每个输入元素(文本框、列表等)添加标签(跨度),以防止打印时文本被 chop 。我想在打印之前确保所有这些标签都反射(reflect)了用户从各自的输入字段中输入的最新值。

我的第一个想法是在每个文本框后面放一个标签,并在页面渲染时将其绑定(bind)到相同的值,然后根据 CSS 媒体属性隐藏/显示输入或标签。但是我还需要为每个输入元素设置 onchange 处理程序,以便在每次更改其值时更新其各自的标签。

我的下一个想法是使用 onbeforeprint 和一些 jQuery 在一个地方使用当前值动态更新标签。更干净、集中、更简洁的代码。

但据我所知,onbeforeprintonafterprint 仅在 IE 和 Firefox 中受支持。 ... 但是 ... 我能找到的关于浏览器对这两个功能的支持的每篇文章或帖子都来自 4 或 5 年,甚至更早!

所以我想知道,在过去的 5 年中,Chrome 和 Safari 是否在任何时候添加了对这两个功能的支持?

最佳答案

虽然上述答案很好地回答了直接问题,但省略了以下基本信息:

虽然特定的 onbeforeprintonafterprint 事件没有得到普遍支持,但概念事件有功能支持 - 可以在前后执行代码在大多数现代浏览器中打印。

有关详细信息,请参见此处:http://tjvantoll.com/2012/06/15/detecting-print-requests-with-javascript/

总结: 存在一个 window.watchMedia API,它允许您 Hook CSS 媒体查询的转换事件,包括 'print' 媒体查询。这使您可以 Hook 打印页面之前和之后立即发生的事件。

此 API 得到了 Chrome 和 Webkit 的良好支持,onbeforeprintonafterprint 事件在 IE 和 Firefox 中得到了很好的支持,为您提供了很好的覆盖范围。

关于javascript - 现代浏览器是否支持 onbeforeprint/onafterprint HTML 事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22969552/

相关文章:

javascript - 在 Bootstrap 中防止在移动设备上加载带有 hide-md 或 hide-lg 的图像的最佳方法是什么?

javascript - 使用 JavaScript 或 CSS 添加 OnClick 事件

python - 将 pandas 数据框放入 django 模板中

css - 在 HTML5 视频元素上使用 "will-change"有好处吗?

html - 触摸屏的CSS伪类问题

javascript - HTML 文档触发的第一个事件是什么?

asp.net - 我可以根据文本的长度动态更改 asp.net 按钮的宽度吗

javascript - 使用转换 :translate on parent 时固定元素出现问题

javascript - 如何减少 SPA 中 DOM 元素的数量

javascript - 在 XHR 请求中使用 try/catch 而不是 `.catch` 可观察运算符是否会降低性能?