js打印指定区域

JS打印特定区域内容2010-07-26 14:00

很多时候,我们在做系统的时候要做打印功能,打印在js中其实很简单,不过这个很简单的代码并不能满足我们的特定需求,比如我们需要打印的表单在很多文字的中间,或者文字中包含一些广告或者图片什么的,这就很难用:window.print();这时,我们就要分区域的打印,将需要打印的内容提取出来让打印机知道,而不是一股脑的全部打印!

下面是两种实现的方法:

第一种:区域划分法

将要打印的部分用特殊的字符标记起来进行打印。

这样下来还是有页眉和页脚,可以写去页眉页脚的方法放进去。

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); //从开始代码向后取html

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-->
再加个打印按纽 οnclick=preview(1)


第二中:组件法

WebBrowser是IE内置的浏览器控件,无需用户下载.

一、WebBrowser控件
  <object ID='wb' WIDTH=0 HEIGHT=0 CLASSID='CLSID:8856F961-340A-11D0-A96B-00C04FD705A2'></object> //放进<body>中
二、WebBrowder控件的方法
//打印

wb.ExecWB(6,1);

//打印设置

wb.ExecWB(8,1);

//打印预览

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>

代码如下:

<script language="javascript">
function printsetup()...{
// 打印页面设置
wb.execwb(8,1);
}
function printpreview()...{
// 打印页面预览

wb.execwb(7,1);

}

function printit()
...{
if (confirm('确定打印吗?')) ...{
wb.execwb(6,6)
}
}
</script>

<OBJECT classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2" height=0 id=wb name=wb width=0></OBJECT>
<input type=button name=button_print value="打印" class="noprint" οnclick="javascript:printit()">
<input type=button name=button_setup value="打印页面设置" class="noprint" οnclick="javascript:printsetup();">
<input type=button name=button_show value="打印预览" class="noprint" οnclick="javascript:printpreview();">

下面是去除页脚页眉的js代码

代码如下:


<script>
var HKEY_Root,HKEY_Path,HKEY_Key;
HKEY_Root="HKEY_CURRENT_USER";
HKEY_Path="\\Software\\Microsoft\\Internet Explorer\\PageSetup\\";
//设置网页打印的页眉页脚为空
function PageSetup_Null()
{
try
{
var Wsh=new ActiveXObject("WScript.Shell");
HKEY_Key="header";
Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,"");
HKEY_Key="footer";
Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,"");
}
catch(e)
{

}
}
//设置网页打印的页眉页脚为默认值
function PageSetup_Default()
{
try
{
var Wsh=new ActiveXObject("WScript.Shell");
HKEY_Key="header";
Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,"&w&b页码,&p/&P");
HKEY_Key="footer";
Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,"&u&b&d");
}
catch(e)
{}
}

</script>


注意有可能执行时,会出现没有效果的错误,这时原因是可能你的浏览器限制了active对象的创建,只要取消限制就好了,取消方法如下:
打开你的ie浏览器internet选项—— 安全—— 自定义级别—— 把对没有标记为安全的activex控件进行初始化和脚本运行 设置为启用

这样在加打印按钮的时候,只要加个事件触发就好了。


</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值