js网页打印,js打印,javascript局部打印,网页局部打印方法

在网页中经常看到有打印功能,点击之后,只针对特定区域进行的打印。网上看了一下,大体上有2中实现方法,一种是用css @media控制,另一种是直接用js控制。下面分别来对其进行说明一下!

一、css控制网页局部打印

关于css控制打印,我之前的一篇文章写过css @media,不知道大家有没有印象了~~主要是介绍Media Query方法,地址:www.haorooms.com/post/css3me...

也引进了css2的media

bash 复制代码
 <link href="css/style.css" rel="stylesheet" type="text/css" media="all" />

media可以是all,也可以是print ,加入是print,那么这个css只有在打印的时候才加载。那么这样就好办了,我们可以写针对css打印的样式,有些地方在打印的时候不显示,那么直接用display:none来设置不就可以了嘛!

除了上面的这种写法之外,还可以这么写

css 复制代码
@media print { 
.noprint { display: none; }
} 

当你打印的时候noprint 类下面的所有内容不显示,不打印的时候显示。

举例:

ini 复制代码
<div class="noprint" >  
<table style="margin:0 auto;width:500px;">  
    <tr align="center" ><td>  
      <object id="WebBrowser" classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2" height="0"  
                    width="0">  
      </object>  
  <input type="button" value="打印" onclick="document.all.WebBrowser.ExecWB(6,1)">  
  <input type="button" value="页面设置" onclick="document.all.WebBrowser.ExecWB(8,1)">  
<input type="button" value="直接打印" onclick="document.all.WebBrowser.ExecWB(6,6)">  
  <input type="button" value="打印预览" onclick="document.all.WebBrowser.ExecWB(7,1)">  
    </td></tr>  
</table>
</div>  

这些内容在打印之前是显示的,当你点击打印的时候,会用上面的样式,不显示。达到了局部打印的效果!

二、js局部打印

直接上案例

xml 复制代码
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>haorooms js局部打印案例</title>
<script type="text/javascript">   
	function doPrint() {    
		bdhtml=window.document.body.innerHTML;    
		sprnstr="<!--startprint-->";    
		eprnstr="<!--endprint-->";    
		prnhtml=bdhtml.substr(bdhtml.indexOf(sprnstr)+17);    
		prnhtml=prnhtml.substring(0,prnhtml.indexOf(eprnstr));    
		window.document.body.innerHTML=prnhtml; 
		window.print();    
}    
</script>
</head>

<body>
<p>1不需要打印的地方</p>
<p>2这里不要打印啊</p>
<!--startprint--><!--注意要加上html里star和end的这两个标记,之前没加,一直没效果,谁叫咱们菜呢~-->
<h1>打印标题</h1>
<p>打印内容~~</p>
<!--endprint-->
<button type="button" onclick="doPrint()">打印</button>
<p>1haorooms博客不打印的地方啊哈哈哈哈</p>
<p>2</p>
</body>
</html>

可以把上面的代码黏贴到网页中,试一试,只有做了标记的地方打印了,代码很简单,相信你也看得懂。

延伸

通过上面的案例,我们可以看到,只要我们把要打印的东西放到document.body.innerHTML中就可以了 无论是一行内容,还是图片,还是文字,只要我们把拿到的html代码,赋值给document.body.innerHTML,然后在运用window.print(); 就可以对赋值的代码进行打印了!

问题

上面的方法打印完毕之后,body的内容变掉了,不是我们想要的结果,我们可以使用一个jquery插件来实现:这个插件名字是jquery.printarea.js

使用方法:

xml 复制代码
<script src="http://www.haorooms.com/theme/assets/js/jquery.js"></script>
<script src="jquery.printarea.js"></script>
<script type="text/javascript">   
    function doPrint() {       
       $("#dayin").printArea();    
}    
</script>

<div id="dayin">
<h1>haorooms打印标题</h1>
<p>haorooms打印的文字</p>
<img src="yideng.png">
<img src="haorooms.png">
</div>

插件下载地址

关于网页打印,今天就说这么些,希望大家留言相互交流啊!

相关推荐
万少9 分钟前
万少的 Claude Code 入门教程
前端·人工智能·后端
এ慕ོ冬℘゜19 分钟前
JS 前端基础高频面试题
开发语言·前端·javascript
放下华子我只抽RuiKe522 分钟前
React 从入门到生产(八):测试与部署
前端·javascript·深度学习·react.js·前端框架·ecmascript·集成学习
蜡笔小电芯29 分钟前
【Electron】第2章—BrowserWindow 与 Electron 窗口机制
前端·javascript·electron
zhangxingchao32 分钟前
AI 大模型面试核心二:微调、RAG、MCP、Agent 与工程落地
前端·人工智能·后端
ZC跨境爬虫33 分钟前
跟着 MDN 学CSS day_15:(掌握CSS背景与边框的创造性用法)
前端·css·ui·html·tensorflow
zhangxingchao34 分钟前
AI 大模型面试核心三: RAG、Agent 到 Prompt Engineering 的工程化理解
前端·人工智能·后端
Hilaku36 分钟前
从 15MB 减到 800KB,一行 ffmpeg 解决3D 渲染卡顿问题
前端·javascript·程序员
彦为君37 分钟前
JavaSE-11-ByteBuffer(NIO核心组件)
java·开发语言·前端·数据库·后端·spring·nio
丁劲犇42 分钟前
使用TraeAI开发Web页面测试MSYS2 ucrt64 Qt MCP服务器
服务器·前端·c++·qt·mcp