首页 > 其他分享 >web打印时隐藏按钮及其他信息的方法讨论

web打印时隐藏按钮及其他信息的方法讨论

时间:2023-09-18 10:00:50浏览次数:28  
标签:web span2 打印 window 按钮 隐藏 页面


  作者:塞北的雪(northsnow)

  web打印是困扰很多web开发人员的问题。有很多人提出了不同的web打印解决方案,还有很多的商业报表设计器来帮我们(需要付费的,我想很多人不想花这个钱),以前我也写过一篇关于web打印解决方案的文章:

  本文不会讨论这个问题。如果大家对于web打印各种解决方案感兴趣,可以阅读上文,或者到互联网上搜索。这方面对文章很多。

  本文将提供给大家一个在普通ie打印的情况下,如何在打印的报表中省略掉我们不希望看到的东西,保留想要看到的东西,而对于用户来说又是透明的,这样的一个解决方案。
  方案如下:
  首先应该养成良好的写程序的习惯,就是将各部分都分别包装起来,一般用span或者div,比如: 

<html>
<span id="span1">
……
</span>
<span id="span2">
……
</span>
</html>

  假如我们不想打印span2中的内容,在页面上添加这样一段javascript程序:

<script>
//-----  下面是打印控制语句  ----------
window.οnbefοreprint=beforePrint;
window.οnafterprint=afterPrint;
//打印之前隐藏不想打印出来的信息
function beforePrint()
{
     span2.style.display='none';
}
//打印之后将隐藏掉的信息再显示出来
function afterPrint()
{
    span2.style.display='';
}
</script>


  这样,当用户打印本页的,打印的纸张上,就看不到span2中的内容。而用户根本感觉不到。

  更具上面的一个小例子,我们可以有了一点入门了吧,我们只要合理的分割包装整个页面,我们就可以灵活的控制整个页面的打印输出。如果我们在页面上设计了打印按钮,只要这样写就可以了:
<a href="#" οnclick="beforePrint();window.print();afterPrint();">打印</a>

  另外如果我们想把查询的表格中的某列或某行省略掉可不可以呢?答案是肯定的,不过我们需要做更多的工作,假如我们要隐藏一列。例子代码如下:

<table cellspacing="0" border="1" bordercolor="#000000" class="tableBorder2" cellpadding=0   width="100%">
      <tr height="25">
        <td valign="center" align="left" name="op_TD" width="18%" class="noticetitle" background="../../images/topbg.gif"> 操作</td>        
        <td valign="center" align="left" width="12%" class="noticetitle" background="../../images/topbg.gif"> 车型</td>
                                               </tr>
                        
        <tr>
         <td height="23" align="left" class="inputstyle"  name="op_TD" >
           <a href="cj_forward_mx.asp?cx=CCK231&cj_code=E900&cj=锻工车间&next_gx=锻" target="_blank">明细</a>
           <a href="cj_forward_card.asp?cx=CCK231&to_cj_code=E900&to_cj=锻工车间&t_money=840&next_gx=锻" target="_blank">单据</a>
          </td>
         <td height="23" align="left" class="inputstyle">
           CCK231</td>
    </tr>
          
        <tr>
         <td height="23" align="left" class="inputstyle"  name="op_TD" >
           <a href="cj_forward_mx.asp?cx=CCK231&cj_code=C430-2&cj=国凯公司&next_gx=工" target="_blank">明细</a>
           <a href="cj_forward_card.asp?cx=CCK231&to_cj_code=C430-2&to_cj=国凯公司&t_money=630&next_gx=工" target="_blank">单据</a>
          </td>
         <td height="23" align="left" class="inputstyle">
           CCK231</td>
         
        </tr>        
    <tr height="23">
                            <td colspan="2" align="right">合计:907,620.00</td>
                       </tr>                  
     <tr height="30"><td align=right id="aPrint">
         <a href="#" οnclick="beforePrint();window.print();afterPrint();">打印</a>  
     </td></tr></table> f


  这段代码中,我们在想要隐藏的那个列的td中都添加了 name="op_TD" ,把下面的javascript代码加入到本页面内,就可以控制name为 op_TD 的所有td在打印时都隐藏起来。代码如下:

<script>
//-----  下面是打印控制语句  ----------
window.οnbefοreprint=beforePrint;
window.οnafterprint=afterPrint;
//打印之前隐藏不想打印出来的信息
function beforePrint()
{
    var opTDS=document.getElementsByTagName('TD');
    for(var i=0;i<opTDS.length;i++)
    {
        if(opTDS[i].name=='op_TD')opTDS[i].style.display='none';
    }     aPrint.style.display='none';  //隐藏打印按钮
}
//打印之后将隐藏掉的信息再显示出来
function afterPrint()
{
    var opTDS=document.getElementsByTagName('TD');
    for(var i=0;i<opTDS.length;i++)
    {
        if(opTDS[i].name=='op_TD')opTDS[i].style.display='';
    } 
     aPrint.style.display='';   //显示打印按钮
}</script>

    看了我上面的讲解,我相信大家会有自己的心得了吧,还等什么?自己动手做做吧! 

标签:web,span2,打印,window,按钮,隐藏,页面
From: https://blog.51cto.com/u_8215601/7507457

相关文章

  • html5 的 webScoket 和 C# 建立Socket连接
    html5的webScoket和C#建立Socket连接最近使用的web项目中,需要服务器直接触发前端显示效果。所以研究了一下websocket:名词解释:WebSocketWebSocket协议是一种双向通信协议,它建立在TCP之上,同http一样通过TCP来传输数据,但是它和http最大的不同有两点:1.WebSocket是一种双向......
  • Postman测试金蝶云星空Webapi【协同开发云下的本地环境】
    业务背景:基于金蝶云星空提供的接口测试,交付之前或者联调之前开发者先自测,即使纠错,提高效率。  大致流程:先请求登录接口,获得token后再请求标准webapi或者自定义接口,这样上下文才不会空。 说明: 金蝶的接口格式一般为:http://ServerIp/K3Cloud/接口命名空间.接口实现类名......
  • web2
    打开环境 直接逆向代码 得到flag ......
  • 59-嵌套循环练习-九九乘法表-打印表格数据
        打印上半截,靠右对齐,目前没实现      ......
  • 基于web的客户管理系统-计算机毕业设计源码+LW文档
    一、选题的目的及意义随着商业银行规模的发展,公司业务越来越多,客户和人员的管理也变得越来越困难。在传统的客户管理中,公司往往通过大量的人力和物力进行管理,通过手工记录客户,统计客户订单信息。这种传统的管理方法容易出错,而且不能适应现代化、信息化的发展过程。因此,本基于web的......
  • 基于Java Web的陕西旅游网站的设计与实现-计算机毕业设计源码+LW文档
    一、研究的背景和意义研究背景:本文主要是基于旅游业是我国现阶段发展的重要产业,旅游可以推动经济上的发展,通过深入的对当前旅游行业的研究,也随着网络技术的发展,传统的旅游方式游客已经无法满足,游客不再满足于单一路线的线路,无法进行更多的选择,每天日常的行程安排丧失了一定......
  • web应用及微信小程序版本更新检测方案实践
    背景:随着项目体量越来越大,用户群体越来越多,用户的声音也越来越明显;关于应用发版之后用户无感知,导致用户用的是仍然还是老版本功能,除非用户手动刷新,否则体验不到最新的功能;这样的体验非常不好,于是我们团队针对该问题给出了相应的解决方案来处理;技术栈:vue3+ts+vite+ant-design-......
  • 基于JavaWeb的校园社团平台设计与开发-计算机毕业设计源码+LW文档
    摘要随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了基于JavaWeb的校园社团平台的开发全过程。通过分析基于JavaWeb的校园社团平台管理的不足,创建了一个计算机管理基于JavaWeb的校园社团平台的方案。文章介绍了基于JavaWeb的校园社......
  • 前端开发的未来:Web组件化与可视化编程探索
    随着互联网的快速发展,前端开发领域也日新月异。为了满足越来越多复杂的需求和提高开发效率,前端开发不断演进。本文将深入探讨前端开发的未来,重点关注Web组件化和可视化编程,这两个领域有望改变前端开发的方式。1.Web组件化的兴起Web组件化是前端开发的一个重要趋势,它旨在将Web应......
  • tomcat里web.xml中load-on-startup参数含义
    原文:Theload-on-startupelementindicatesthatthisservletshouldbeloaded(instantiatedandhaveitsinit()called)onthestartupofthewebapplication.Theoptionalcontentsoftheseelementmustbeanintegerindicatingtheorderinwhichtheserv......