gpt4 book ai didi

javascript - 使用 CSS 打印页面的不同部分

转载 作者:太空宇宙 更新时间:2023-11-04 13:44:15 25 4
gpt4 key购买 nike

我这里有以下示例(简单)HTML 文件 http://jsfiddle.net/WhupP/2/该页面包括 4 个主要区域 headerleft-columnrigh-columnfooter。此外,它还包含 2 个 @media 元素 screenprint

当我打印页面时,@media screen{...} 样式只得到调用并打印整个页面。我知道如果我想打印例如除 right-column 之外的所有区域,我会添加类似 .noprint {display:none;}right-专栏

我想知道的是,我可以仅使用 CSS 打印 1 或 2 个区域(在这 5 个区域中)吗?如果这不可能并且需要 JS,那么完成工作所需的最少 JS 代码是多少?

例如,当我打印页面(ctrl+p 或 command+p)时,我只想打印区域 2 和 3。下次我只想打印 2,下次我只想打印 4。

最佳答案

在执行打印操作之前,您必须使用 jQuery 为您希望可见的元素设置一个类,例如 .visiblePrint 并每次切换。

如果愿意,您还可以捕获打印请求: http://tjvantoll.com/2012/06/15/detecting-print-requests-with-javascript/

一个例子:

    <script type="text/javascript">
$( document ).ready(function() {
printMode = 1;

var beforePrint = function() {
(printMode==3) ? printMode = 1 : printMode++;
console.log('Functionality to run before printing.');
};
var afterPrint = function() {
$('div').removeClass('visiblePrint');
switch(printMode) {
case 1:
$('#print1').addClass('visiblePrint');
break;
case 2:
$('#print2').addClass('visiblePrint');
break;
case 3:
$('#print3').addClass('visiblePrint');
break;
}

console.log('Functionality to run after printing');
};

if (window.matchMedia) {
var mediaQueryList = window.matchMedia('print');
mediaQueryList.addListener(function(mql) {
if (mql.matches) {
beforePrint();
} else {
afterPrint();
}
});
}

$(window).on('beforeprint', beforePrint);
$(window).on('afterprint', afterPrint);
/*window.onbeforeprint = beforePrint;
window.onafterprint = afterPrint;*/


}());
</script>
<style type="text/css" media="print">
div {
display:none;
}
.visiblePrint {
display: block;
}
</style>
</head>
<body>
<div id="print1">Messaggio di stampa 1</div>
<div id="print2">Secondo messaggio di stampa</div>
<div id="print3">Viva la mamma</div>
</body>

不幸的是,不是跨浏览器,在 chrome 中引发 2 个时间事件,在 firefox 中不引发事件...

关于javascript - 使用 CSS 打印页面的不同部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22602029/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com