处理一个框架页面打印的问题,使用框架页面的“window.print();”方法打印的是浏览器整个窗口页面而不是框架页面。如果框架页面有滚动条,打印出来也不会完整。如何只打印框架页面内容呢?
同事找到了方法在框架页面写入JS,document.execCommand(“Print”);使用文档对象命令就可以只打印当前文档。
就此引开去,我们如何打印网页的特定区域呢?
查阅大部分网页技巧,再经过自己的思考,我们可以通过如下途径解决这样的问题。
第一个方法,仍然使用window.print();,不过需要将窗口中的内容置换成需要打印的内容。我们可以使用脚本进行设置。通过onbeforeprint事件,在打印之前设置打印内容并将之前内容备份;通过onafterprint事件,将之前内容还原。
var OrginalHTML=””;
window.onbeforeprint=function()
{
var PrintHTML=””;
var obj=null;
OrginalHTML=document.body.innerHTML;
//如果使用层定位需要打印的HTML,假设ID为divPrintArea
obj=document.getElementByIdx(“divPrintArea”);
if(obj)
PrintHTML=obj.innerHTML;
//如果打印框架内的内容,假设ID为iframePrintArea
obj=document.getElementByIdx(“iframePrintArea”);
if(obj)
PrintHTML=obj.contentWindow.document.documentElement.innerHTML;
document.body.innerHTML=PrintHTML;
}
window.onafterprint=function()
{
document.body.innerHTML=OrginalHTML;//还原打印前的内容
}
网上还有使用界限符的方法,将打印内容前后加上特定标签,然后再将提取的内容再打印。
该类方法的特征都是通过界限方法或者元素定位的方法,知道需要打印的内容,然后设法将其设置为打印区域打印。
第二个方法,使用临时文件的方式,将所需要打印的内容使用FSO方法输入到文件中,一般仍然为网页形式进行打印。当然也可以粘贴进入Office软件通过VBA对象打印。但这样通用性不强依赖于用户安装相应的软件。
评论前必须登录!
注册