javascript 控制局部打印 (有缺欠)

本文介绍了一种使用JavaScript实现网页部分区域打印的方法,通过设置特定的注释标记来定义打印范围,并提供了一个示例代码。此外,文章还讨论了用户体验的问题及改进方案。

代码如下

ContractedBlock.gifExpandedBlockStart.gifCode
        function Preview( oper ) //参数为第几个打印块
ExpandedBlockStart.gifContractedBlock.gif
        {
            bdhtml 
= window.document.body.innerHTML; //获取当前页的html代码
            sprnstr = "<!--startprint"+oper+"-->"//设置打印开始区域
            eprnstr = "<!--endprint"+oper+"-->";   //设置打印结束区域
            prnhtml = bdhtml.substring(bdhtml.indexOf(sprnstr)+18);  //从开始代码向后取html
            prnhtml = prnhtml.substring(0,prnhtml.indexOf(eprnstr)); //从结束代码向前取html

            window.document.body.innerHTML 
= prnhtml; //设置当前画面的内容为要打印的内容, 从而不需打印的部分就没了

            
//添加一个打印必备的js控件
            var WebBrowser = '<OBJECT ID="WB" WIDTH=0 HEIGHT=0 CLASSID="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"></OBJECT>';
            document.body.insertAdjacentHTML(
'beforeEnd', WebBrowser); 

            document.body.all.WB.execwb( 
71 ); //打印预览

            window.document.body.innerHTML 
= bdhtml; //将原来画面还原回去
        }


打印按钮中的onclick事件自不用说, 在需要打印的部分开头加上<!--startprint1-->, 结尾加上<!--endprint1-->. (其中"1"为要打印的区块, 是跟按钮事件中的参数一致的)

缺欠就是每当点击打印的时候, 首先会看到画面的变化(变成只剩下要打印的部分), 感觉这样用户体验不是很好.
还有一种方法就是将不需要打印的地方都应用@media.print的一个dispaly: none的样式, 这样无形中加大了太多工作量了.
哪位要是有更好的解决方案麻烦留个言, 让小弟也学习学习. 不尽感激.

转载于:https://www.cnblogs.com/tonykent/archive/2009/02/11/1387949.html

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值