Javascript 如何在屏幕上使用打印样式表?

Javascript 如何在屏幕上使用打印样式表?,javascript,jquery,css,Javascript,Jquery,Css,我想显示我的网页的打印预览。我寻找jQuery插件来实现这一点,但它们都已经过时或未维护。我想我可以自己做(所以只有当它坏了的时候我才怪自己) 我唯一需要的是能够在屏幕上加载media=“print”和/或@media printCSS,方法是引诱浏览器,让它相信支持是纸质的 有没有办法做到这一点?类似于$.media('print') 我在项目中使用jQuery,但vanilla JS也可以。这只适用于,不适用于@media print{}: 只要您想显示网站的打印版本,就可以使用这些行 $(

我想显示我的网页的打印预览。我寻找jQuery插件来实现这一点,但它们都已经过时或未维护。我想我可以自己做(所以只有当它坏了的时候我才怪自己)

我唯一需要的是能够在屏幕上加载
media=“print”
和/或
@media print
CSS,方法是引诱浏览器,让它相信支持是纸质的

有没有办法做到这一点?类似于
$.media('print')


我在项目中使用jQuery,但vanilla JS也可以。

这只适用于
,不适用于
@media print{}

只要您想显示网站的打印版本,就可以使用这些行

$('link').each(function() {
    if ($(this).prop('media') == '') {
        $(this).prop('media', 'all')
    }
    switch ($(this).prop('media')) {
        case 'print':
            $(this).prop('media', 'screen')
            break

        case 'all':
            // Do nothing
            break

        default:
            // Don't display screen, speech, ...
            $(this).prop('media', 'print')
            break
    }
})

请注意@Teemu在问题注释中指出的方式:所有单位仍将与屏幕相对,因此在纸上可能不同。

您需要它的目的是什么?用于调试/开发,还是用于生产?并不是那么简单,许多CSS规则在屏幕和纸张上产生不同的样式。你需要一个特定的样式表来模拟屏幕上的纸张。@niklaz:我会将其用于制作:一个打印预览,可以由JS.New window或iframe启动,带有css副本,而不带@media print。但可维护性低。所有现代浏览器都内置了打印预览功能,对吗?因此,我想说,调用
window.print()
,并完成它…结果将比您可以做的任何事情都更接近现实-此预览将考虑自动页眉/页脚、打印背景色和禁用图像是或否以及其他设置等选项,一开始你甚至连JavaScript都无法访问…