javascript怎样精确定位所要打印的内容

JavaScript09

javascript怎样精确定位所要打印的内容,第1张

关于JS打印问题!网上收集+自己总结 ,需要的朋友可以参考下。

一般打印就用window.print()就OK了

但是一般都是选择性打印所以会调用方法:

复制代码 代码如下:

function preview()

{

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()

}

问题又来了~

会有页脚和页眉~还有横向和纵向之分~

怎么办?

最好就是用到打印预览~

因为它里面有设置

这时必须引用IE的一个控件"WebBrowser"

在页面里引用:

<object id="WebBrowser" width=0 height=0 classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2">

</object>

其控件方法:

复制代码 代码如下:

WebBrowser.ExecWB(1,1) 打开

WebBrowser.ExecWB(2,1) 关闭现在所有的IE窗口,并打开一个新窗口

WebBrowser.ExecWB(4,1) 保存网页

WebBrowser.ExecWB(6,1) 打印

WebBrowser.ExecWB(7,1) 打印预览

WebBrowser.ExecWB(8,1) 打印页面设置

WebBrowser.ExecWB(10,1) 查看页面属性

WebBrowser.ExecWB(15,1) 好像是撤销,有待确认

WebBrowser.ExecWB(17,1) 全选

WebBrowser.ExecWB(22,1) 刷新

WebBrowser.ExecWB(45,1) 关闭窗体无提示

示例:

<object id="WebBrowser" width="0" height="0" classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2">

打印测试

<input type="button" onclick="WebBrowser.ExecWB(7,1)" value="打印预览">

随便用个文本文件复制粘贴~改后缀名~

ie运行~点预览~设置打印~打印~OK

然后再把其考到项目里~比如aspx里

同样运行,点预览~

咦~怎么出现ie安全警告"internet explorer"已阻止此站点用不安全方式使用ActiveX控件"

这时就要改ie的安全设置了(如果没装补丁就没事~那是你"rp"好,不一定客户和其他的人的"rp"和你一样好)

操作:

主菜单"工具"——Internet选项——安全——自定义级别, 将"安全设置"中"对没有标记为安全的ActiveX"控件进行初始化和脚本运行由"禁用"改为"启用"

另一种方法,"工具" "Internet选项" "受信任的站点(可信站点)""站点",然后填入网址即可,如果这个网站不是以https:连接的把下面"对该区域中的所有站点要求服务器验证(https:)"前面的勾去掉即可。

(如果是局域网:那就是 "工具" "Internet选项" "本地Internet" "高级")

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 }

document.write是不能放到事件函数中执行的,否则整个页面的文档流会被重新改写,这样你放在head中div{position: absolute}就自动消失了,所以定位效果就无效了。你在浏览器控制台看一下就明白了(整个head段是空的)。

应该直接操作dom对象来实现你的目的,即把

document.write(div)

改为

document.body.innerHTML=div

就OK了