用于打印的 Javascript 事件处理程序

IT技术 javascript events printing
2021-03-11 06:22:41

我正在尝试在打印时更改样式:

javascript 中是否存在可以在调用 file>>print 时侦听的事件?它是什么?另外 - 打印完成时是否有处理程序?它是什么?

或者如果有更好的方法可以通过其他方式(例如样式表)做到这一点,您将如何做到这一点?

5个回答

不同的样式表

您可以指定不同的样式表进行打印。

<link rel="stylesheet" type="text/css" media="print" href="print.css" />
<link rel="stylesheet" type="text/css" media="screen" href="main.css" />

一个样式表

正如 kodecraft 所提到的,您还可以使用 @media 块将样式放入同一个文件中。

@media print {
    div.box {
        width:100px;
    }
}

@media screen {
    div.box {
        width:400px;
    }
}

在 IE 中有非标准的 window.onBeforePrint() 和 window.onAfterPrint() 事件侦听器。然而,我知道没有一种非 IE 方法可以做到这一点。

你想做出什么样的改变?您的问题可能可以通过为打印样式表指定不同的规则来解决。

对于打印,向 DOM 添加附加内容可能很好。这一切都可以通过 print.css 完成,默认情况下隐藏其他元素,启用它们。不过,我更喜欢 javascript 方法。你知道其他浏览器的解决方案吗?
2021-05-16 06:22:41
您可以使用 matchMedia api developer.mozilla.org/en/DOM/window.matchMedia在 chrome 9+ 和 Safari 5.1+ 中模拟这一点
2021-04-25 06:22:41
罗杰,你愿意详细说明这个解决方案吗?在 chrome/safari 中专门模拟这个。谢谢
2021-05-02 06:22:41
@wapsee jsfiddle.net/W4As4
2021-05-16 06:22:41

我们还发现您可以使用以下内容进行仅打印样式:

<style type="text/css">
@media print {
    div
    {
        overflow:visible;
    }    
}
</style>

IE 有 onbeforeprint 和 onafterprint