现在很多浏览器都支持window.matchMedia
. 此 API 允许您检测 CSS 媒体查询何时生效(例如,旋转屏幕或打印文档)。对于跨浏览器方法,请window.matchMedia
与window.onbeforeprint
/结合使用window.onafterprint
。
以下可能会导致多次调用beforePrint()
and afterPrint()
(例如,Chrome 每次重新生成打印预览时都会触发侦听器)。根据您为响应打印而进行的特定处理,这可能是可取的,也可能不是可取的。
if ('matchMedia' in window) {
// Chrome, Firefox, and IE 10 support mediaMatch listeners
window.matchMedia('print').addListener(function(media) {
if (media.matches) {
beforePrint();
} else {
// Fires immediately, so wait for the first mouse movement
$(document).one('mouseover', afterPrint);
}
});
} else {
// IE and Firefox fire before/after events
$(window).on('beforeprint', beforePrint);
$(window).on('afterprint', afterPrint);
}
更多:http ://tjvantoll.com/2012/06/15/detecting-print-requests-with-javascript/