JavaScript实现网页局部打印与分页控制详解
本文详细介绍JavaScript实现网页局部打印的多种方案。通过CSS媒体查询隐藏非打印区域,利用page-break-after实现分页控制,以及调用IE内置WebBrowser控件执行打印、预览和页面设置。包含具体的代码示例和操作步骤,帮助开发者实现灵活的打印功能。
JS打印功能概述
本文介绍JavaScript实现网页打印组合功能,涵盖局部打印、分页控制及组件调用等全面内容,供开发者参考。
局部打印与CSS控制
1. 局部打印:实现指定区域的打印功能。 解决方案: 通过CSS样式隐藏不需要打印的内容。 <style type="text/css" media=print> .noprint{display : none }
在分页场景中,使用 .PageNext{page-break-after: always;} 为不需要打印的元素添加 class="Noprint" 类,即可使其不出现在打印及打印预览中。 需要在特定位置分页时,添加 <div class="PageNext"></div> 即可。 </style> 同时控制非打印区域的显示: <p class="noprint">不需要打印的地方</p>
WebBrowser组件调用
2. 引用组件 WebBrowser是IE浏览器内置的控件,用户无需额外下载。 WebBrowser控件代码: <object ID='WebBrowser' WIDTH=0 HEIGHT=0 CLASSID='CLSID:8856F961-340A-11D0-A96B-00C04FD705A2'></object>
关于该组件的具体用法列举如下: WebBrowser.ExecWB(1,1) 执行打开操作 Web.ExecWB(2,1) 关闭所有当前IE窗口,并打开一个新窗口 Web.ExecWB(4,1) 保存当前网页 Web.ExecWB(6,1) 执行打印操作 Web.ExecWB(7,1) 执行打印预览 Web.ExecWB(8,1) 设置打印页面属性 Web.ExecWB(10,1) 查看页面属性 Web.ExecWB(15,1) 执行撤销操作(具体功能待确认) Web.ExecWB(17,1) 执行全选操作 Web.ExecWB(22,1) 刷新页面 Web.ExecWB(45,1) 关闭窗体且无提示
JS局部打印实例
3. 实例演示
<head>
<script language="javascript">
<style type="text/css" media=print>
.noprint{display : none }
</style>
function printsetup()
{
// 打印页面设置
wb.execwb(8,1);
}
function printpreview(){
// 打印页面预览
wb.execwb(7,1);
}
function printit()
{
if(confirm('确定打印吗?'))
{
wb.execwb(6,6)
}
}
</script>
</head>
<body>
<p class="noprint">
<OBJECT classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2" height="0" id="wb" name="wb" width="0"></OBJECT>
<input type="button" name="button_print" value="打印" onclick="javascript:printit()" />
<input type="button" name="button_setup" value="打印页面设置" onclick="javascript:printsetup();" />
<input type="button" name="button_show" value="打印预览" onclick="javascript:printpreview();" />
</p>
</body>
3. 使用JS实现简单的页面局部打印
function preview(oper)
{
if (oper < 10){
bdhtml=window.document.body.innerHTML;//获取当前页的html代码
sprnstr="<!--startprint"+oper+"-->";//设置打印开始区域
eprnstr="<!--endprint"+oper+"-->";//设置打印结束区域
prnhtml=bdhtml.substring(bdhtml.indexOf(sprnstr)+18); //从开始代码向后取htm
prnhtml=prnhtml.substring(0,prnhtml.indexOf(eprnstr));//从结束代码向前取html
window.document.body.innerHTML=prnhtml;
window.print();
window.document.body.innerHTML=bdhtml;
}
else {
window.print();
}
}
使用方法非常简单,将需要打印的内容包裹在 <!--startprint1-->XXXXX<!--endprint1--> 注释标记之间。 然后添加一个打印按钮,设置 onclick=preview(1) 事件。
页面打印参数设置
4. 控制“纵打”、“横打”以及“页面边距”。 (1)<script defer>
function SetPrintSettings() {
// -- advanced features
factory.printing.SetMarginMeasure(2) // measure margins in inches
factory.SetPageRange(false, 1, 3) // need pages from 1 to 3
factory.printing.printer = "HP DeskJet 870C"
factory.printing.copies = 2
factory.printing.collate = true
factory.printing.paperSize = "A4"
factory.printing.paperSource = "Manual feed"
// -- basic features
factory.printing.header = "This is MeadCo"
factory.printing.footer = "Advanced Printing by ScriptX"
factory.printing.portrait = false
factory.printing.leftMargin = 1.0
factory.printing.topMargin = 1.0
factory.printing.rightMargin = 1.0
factory.printing.bottomMargin = 1.0
}
</script>
function preview(oper)
{
if (oper < 10){
bdhtml=window.document.body.innerHTML;//获取当前页的html代码
sprnstr="<!--startprint"+oper+"-->";//设置打印开始区域
eprnstr="<!--endprint"+oper+"-->";//设置打印结束区域
prnhtml=bdhtml.substring(bdhtml.indexOf(sprnstr)+18); //从开始代码向后取htm
prnhtml=prnhtml.substring(0,prnhtml.indexOf(eprnstr));//从结束代码向前取html
window.document.body.innerHTML=prnhtml;
window.print();
window.document.body.innerHTML=bdhtml;
}
else {
window.print();
}
}
使用方法非常简单,将需要打印的内容包裹在 <!--startprint1-->XXXXX<!--endprint1--> 注释标记之间。 然后添加一个打印按钮,设置 onclick=preview(1) 事件。
如需了解更多关于JS打印功能的内容,可点击《js打印功能汇总》进行专题学习。
以上就是本文的全部内容,希望能为读者的学习提供有益帮助,也欢迎大家继续支持本站。
D3.js 处理大规模数据点的性能优化策略
2026-11-05 15:37:25
JS实现网页摄像头实时扫码:结合getUserMedia与jsQR教程
2026-11-05 15:27:28
D3.js v5 迁移到 v7 的 API 变更与注意事项
2026-11-05 11:57:17
使用 animate.js 实现多元素协同的序列动画
2026-11-04 22:27:53
JS拖拽排序时怎么添加平滑动画效果?FLIP技术实战
2026-11-04 10:12:22
