js控制打印 转的
很多时候,我们在做系统的时候要做打印功能,打印在js中其实很简单,不过这个很简单的代码并不能满足我们的特定需求,比如我们需要打印的表单在很多文字的中间,或者文字中包含一些广告或者图片什么的,这就很难用:window.print();这时,我们就要分区域的打印,将需要打印的内容提取出来让打印机知道,而不是一股脑的全部打印!
下面是两种实现的方法:
第一种:区域划分法。将要打印的部分用特殊的字符标记起来进行打印。这样下来还是有页眉和页脚,可以写去页眉页脚的方法放进去。JS 实现简单的页面局部打印

1 function preview(oper) {
2 if (oper < 10){
3 bdhtml=window.document.body.innerHTML;//获取当前页的html代码
4 sprnstr="<!--startprint"+oper+"-->";//设置打印开始区域
5 eprnstr="<!--endprint"+oper+"-->";//设置打印结束区域
6 prnhtml=bdhtml.substring(bdhtml.indexOf(sprnstr)+18); //从开始代码向后取html
7
8 prnhtml=prnhtml.substring(0,prnhtml.indexOf(eprnstr));//从结束代码向前取html
9 window.document.body.innerHTML=prnhtml;
10 window.print();
11 window.document.body.innerHTML=bdhtml;
12
13 }
14 else{
15 window.print();
16 }
17
18 }

使用时,将页面内要打印的内容加入中间<!--startprint1-->XXXXX<!--endprint1-->,再加个打印按纽 onclick=preview(1)
第二中:组件法。WebBrowser是IE内置的浏览器控件,无需用户下载。
WebBrowser控件 :
<object ID='wb' WIDTH=0 HEIGHT=0 CLASSID='CLSID:8856F961-340A-11D0-A96B-00C04FD705A2'></object> //放进<body>中
WebBrowder控件的方法 :
1 //打印
2 wb.ExecWB(6,1);
3 //打印设置
4 wb.ExecWB(8,1);
5 //打印预览
6 wb.ExecWB(7,1);
关于这个组件还有其他的用法,列举如下:
wb.ExecWB(1,1) 打开
wb.ExecWB(2,1) 关闭现在所有的IE窗口,并打开一个新窗口
wb.ExecWB(4,1) 保存网页
wb.ExecWB(6,1) 打印
wb.ExecWB(7,1) 打印预览
wb.ExecWB(8,1) 打印页面设置
wb.ExecWB(10,1) 查看页面属性
wb.ExecWB(15,1) 好像是撤销,有待确认
wb.ExecWB(17,1) 全选
wb.ExecWB(22,1) 刷新
wb.ExecWB(45,1) 关闭窗体无提示
但是打印是会把整个页面都打印出来的,页面里面有什么东西就打印出来,我们有时候只需要打印数据表格,这时我们就要写一个样式了。把不想打印的部份隐藏起来:
样式内容:
<style type="text/css" media=print>
.noprint...{display : none }
</style>
然后使用样式就可以: <p class="noprint">不需要打印的地方</p> ,代码如下:

1 <script language="javascript">
2 function printsetup()...{
3 // 打印页面设置
4 wb.execwb(8,1);
5 }
6 function printpreview()...{
7 // 打印页面预览
8
9 wb.execwb(7,1);
10
11 }
12
13 function printit()
14 ...{
15 if (confirm('确定打印吗?')) ...{
16 wb.execwb(6,6)
17 }
18 }
19 </script>

1 <OBJECT classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2" height=0 id=wb name=wb width=0></OBJECT>
2 <input type=button name=button_print value="打印" class="noprint" onclick="javascript:printit()">
3 <input type=button name=button_setup value="打印页面设置" class="noprint" onclick="javascript:printsetup();">
4 <input type=button name=button_show value="打印预览" class="noprint" onclick="javascript:printpreview();">
下面是去除页脚页眉的js代码,代码如下:

1 <script>
2 var HKEY_Root,HKEY_Path,HKEY_Key;
3 HKEY_Root="HKEY_CURRENT_USER";
4 HKEY_Path="\\Software\\Microsoft\\Internet Explorer\\PageSetup\\";
5 //设置网页打印的页眉页脚为空
6 function PageSetup_Null()
7 {
8 try
9 {
10 var Wsh=new ActiveXObject("WScript.Shell");
11 HKEY_Key="header";
12 Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,"");
13 HKEY_Key="footer";
14 Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,"");
15 }
16 catch(e)
17 {
18
19 }
20 }
21 //设置网页打印的页眉页脚为默认值
22 function PageSetup_Default()
23 {
24 try
25 {
26 var Wsh=new ActiveXObject("WScript.Shell");
27 HKEY_Key="header";
28 Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,"&w&b页码,&p/&P");
29 HKEY_Key="footer";
30 Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,"&u&b&d");
31 }
32 catch(e)
33 {}
34 }
35
36 </script>
js控制打印 转的的更多相关文章
- JS控制打印指定div
<html><head><script language="javascript">function printdiv(printpage){v ...
- JS 网页打印解决方案
这些日子真是太忙了,项目太多了公司总是加班,而且这些项目中好多都用到的打印,所以学习了一段时间js的打印. 其实原来只是用到了简单的功能,现在要深入的了解才发现原来ie的网页打印也是如此的强大. 以下 ...
- window.print控制打印样式
我们可能会去使用window.print()方法来打印页面,但是当我们遇到需要改变打印时候的字体大小等css样式的时候你可能会懵逼. 所以搜索成了我们的必经之路,我相信在网上搜索出来的最好的答案就是使 ...
- JS控制页面内容
JS操作页面内容 innerText:普通标签内容(自身文本与所有子标签文本)innerHTML:包含标签在内的内容(自身文本及子标签的所有)value:表单标签的内容outerHTML:包含自身标签 ...
- 用js实现打印九九乘法表
用js在打印九九乘法表 思考 在学习了流程控制和条件判断后,我们可以利用js打印各式各样的九九乘法表 不管是打印什么样三角形九九乘法表,我们都应该找到有规律的地方,比如第一列的数字是什么规律,第一行的 ...
- js控制Bootstrap 模态框(Modal)插件
js控制Bootstrap 模态框(Modal)插件 http://www.cnblogs.com/zzjeny/p/5564400.html
- js控制文本框只能输入中文、英文、数字与指定特殊符号.
先在'' 里输入 onkeyup="value=value.replace(/[^\X]/g,'')" 然后在(/[\X]/g,'')里的 X换成你想输入的代码就可以了, 中文u4 ...
- JS控制flash的方法
JS控制flash的一些方法:Play() ---------------------------------------- 播放动画 StopPlay()---------------------- ...
- js 控制Div循环显示 非插件版
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
随机推荐
- [saiku] 登陆/选择cube 时发生了什么
一 登陆saiku时发生了什么 大致流程 saiku 默认有admin和两个开发人员的身份 登陆saiku时,后台用户认证成功后创建了用户信息session 并在session中存储了随机生成的一个s ...
- Roman to Integer [LeetCode]
Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from 1 t ...
- FireFox 一键清理缓存
https://addons.mozilla.org/zh-CN/firefox/addon/empty-cache-button/
- 聚类算法:K-means 算法(k均值算法)
k-means算法: 第一步:选$K$个初始聚类中心,$z_1(1),z_2(1),\cdots,z_k(1)$,其中括号内的序号为寻找聚类中心的迭代运算的次序号. 聚类中心的向量值可任意设 ...
- Objective-C:Foundation框架-常用类-NSNumber
NSArray.NSDictionary是不可以存储C语言中的基本数据类型的.NSNumber可以将基本数据类型包装成对象,这样可以间接将基本数据类型存进NSArray.NSDictionary等集合 ...
- 《Play for Java》学习笔记(五)Form
本书第六章以一个实例介绍了Play Framework中Form的使用,如何绑定数据,如何进行验证 一.项目结构和action
- MySql的导入与导出
1.导入 load data infile '/tmp/yhb/skin_info.txt' into table t_skin fields terminated by '\t' (skin_id, ...
- HTML中的一些常见的事件句柄
onclick 所有类似按钮的表单元素和标记<a>及<area>都支持该处理程序.当用户点击元素时会触发它.如果onclick处理程序返回false,则浏览器不执行任何与按钮或 ...
- Java 8的五大开发技巧
转载:http://geek.csdn.net/news/detail/94219 在Java 9发布之前,我们来分享一些Java 8开发技巧,本文翻译自JetBrains高级开发主管Trisha G ...
- 在 Visual C# 项目中调用 VBA 中的代码
https://msdn.microsoft.com/zh-cn/library/Bb608613.aspx http://www.cnblogs.com/yangbin1005/archive/20 ...