`
cindylu520
  • 浏览: 142773 次
  • 性别: Icon_minigender_2
  • 来自: 大连
社区版块
存档分类
最新评论

JS 打印方法小结

    博客分类:
  • JS
 
阅读更多

JS 实现打印网页中的部分内容:

<script language=javascript> 
 function doPrint() { 
      bdhtml=window.document.body.innerHTML; //获取当前页的HTML代码
    sprnstr="<!--startprint-->"; //设置打印开始区域
      eprnstr="<!--endprint-->"; //设置打印结束区域
      prnhtml=bdhtml.substr(bdhtml.indexOf(sprnstr)+17); //从开始代码向后取html 
      prnhtml=prnhtml.substring(0,prnhtml.indexOf(eprnstr)); //从结束代码向前取html 
      window.document.body.innerHTML=prnhtml; 
      window.print(); 
 } 
</script> 

 <!--startprint--> <!--endprint--> 分别为需要打印内容的起始和终止位置;

在打印的button下直接调用doPrint()方法即可实现打印。

不过此方法的打印为在本页面打开打印预览进行打印的,可能不适用于某些网站的需求。不过此方法可以作为基础,在其上改进。

 

ie自带的有Active控件,但火狐不支持。使用的是js操作dom方法对窗体指定标记内文字进行打印,所以使用时需要定义相关的标签及其样式(文字大小、字体之类)。

<script type="text/javascript"> 
///*********************** 
///打印指定区域页面 
///说明:obj–通过getElementById或其它方式获取标签标识,打印此obj内的文字 
function startPrint(obj) 
{ 
var oWin=window.open("","_blank"); 
var strPrint="<h4 style='font-size:18px; text-align:center;'>打印预览区</h4>\n"; 

strPrint=strPrint + "<script type=\"text/javascript\">\n"; 
strPrint=strPrint + "function printWin()\n"; 
strPrint=strPrint + "{"; 
strPrint=strPrint + "var oWin=window.open(\"\",\"_blank\");\n"; 
strPrint=strPrint + "oWin.document.write(document.getElementById(\"content\").innerHTML);\n"; 
strPrint=strPrint + "oWin.focus();\n"; 
strPrint=strPrint + "oWin.document.close();\n"; 
strPrint=strPrint + "oWin.print()\n"; 
strPrint=strPrint + "oWin.close()\n"; 
strPrint=strPrint + "}\n"; 
strPrint=strPrint + "<\/script>\n"; 

strPrint=strPrint + "<hr size='1′ />\n"; 
strPrint=strPrint + "<div id=\"content\">\n"; 
strPrint=strPrint + obj.innerHTML + "\n"; 
strPrint=strPrint + "</div>\n"; 
strPrint=strPrint + "<hr size='1′ />\n"; 
strPrint=strPrint + "<div style='text-align:center'><button onclick='printWin()' style='padding-left:4px;padding-right:4px;'>打 印</button><button onclick='window.opener=null;window.close();' style='padding-left:4px;padding-right:4px;'>关 闭</button></div>\n"; 
oWin.document.write(strPrint); 
oWin.focus(); 
oWin.document.close(); 
} 
</script> 

 

<button id="btnPrint" onclick="startPrint(document.getElementById('content'))">打印内容</button> 
<div id="content"> 
<div style="font-size:12px;color:#333;"> 
这里是打印内容这里是打印内容这里是打印内容这里是打印内容这里是打印内容这里是打印内容这里是打印内容这里是打印内容这里是打印内容这里是打印内容这里是打印内容这里是打印内容这里是打印内容这里是打印内容这里是打印内容这里是打印内容这里是打印内容这里是打印内容这里是打印内容这里是打印内容这里是打印内容这里是打印内容这里是打印内容这里是打印内容这里是打印内容这里是打印内容这里是打印内容这里是打印内容这里是打印内容这里是打印内容这里是打印内容这里是打印内容这里是打印内容这里是打印内容这里是打印内容这里是打印内容这里是打印内容这里是打印内容这里是打印内容这里是打印内容这里是打印内容这里是打印内容这里是打印内容这里是打印内容这里是打印内容这里是打印内容这里是打印内容这里是打印内容这里是打印内容这里是打印内容这里是打印内容这里是打印内容这里是打印内容这里是打印内容这里是打印内容这里是打印内容这里是打印内容这里是打印内容这里是打印内容这里是打印内容这里是打印内容这里是打印内容这里是打印内容这里是打印内容这里是打印内容这里是打印内容这里是打印内容这里是打印内容这里是打印内容这里是打印内容这里是打印内容这里是打印内容这里是打印内容这里是打印内容 
</div> 
</div>

 这种方法可以新打开打印预览页面再进行打印。至少比较适合我

 

我将以上两种方法糅合到一起,实现在新窗口展示部分网页内容的打印预览页面。

function doPrint() {
	var oWin=window.open("","_blank");
	bdhtml=window.document.body.innerHTML;
	sprnstr="<!--startprint-->";
	eprnstr="<!--endprint-->";
	prnhtml=bdhtml.substr(bdhtml.indexOf(sprnstr)+17);
	prnhtml=prnhtml.substring(0,prnhtml.indexOf(eprnstr));
	oWin.document.write(prnhtml);
	oWin.focus();
	oWin.document.close();
	oWin.print(); 
	oWin.close(); 
}

 

还有其他的方法,本人没有尝试过,不过先放于此,备用。

 

页脚和页眉 横向和纵向之分怎么办? 就是用到打印预览,因为它里面有设置
这时必须引用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" "高级")
(无线网貌似不是局域网的)
推荐第二种~
万事俱备~ok了~
打印方法集(没有一一测试):

-------------------------------------------------------------------------- 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 
<HTML> 
<HEAD> 
<TITLE> New Document </TITLE> 
<META NAME="Generator" CONTENT="EditPlus"> 
<META NAME="Author" CONTENT=""> 
<META NAME="Keywords" CONTENT=""> 
<META NAME="Description" CONTENT=""><script> 
var hkey_root,hkey_path,hkey_key 
hkey_root="HKEY_CURRENT_USER" 
hkey_path="file://software//Microsoft//Internet Explorer\\PageSetup\\" 
//设置网页打印的页眉页脚为空 
function pagesetup_null(){ 
try{ 
var RegWsh = new ActiveXObject("WScript.Shell") 
hkey_key="header" 
RegWsh.RegWrite(hkey_root+hkey_path+hkey_key,"") 
hkey_key="footer" 
RegWsh.RegWrite(hkey_root+hkey_path+hkey_key,"") 
}catch(e){} 
} 
//设置网页打印的页眉页脚为默认值 
function pagesetup_default(){ 
try{ 
var RegWsh = new ActiveXObject("WScript.Shell") 
hkey_key="header" 
RegWsh.RegWrite(hkey_root+hkey_path+hkey_key,"&w&b页码,&p/&P") 
hkey_key="footer" 
RegWsh.RegWrite(hkey_root+hkey_path+hkey_key,"&u&b&d") 
}catch(e){} 
} 
function setdivhidden(id){//把指定id以外的层统统隐藏 
var divs=document.getElementsByTagName("DIV"); 
for(var i=0;i<divs.length;i++) 
{ 
if(divs.item(i).id!=id) 
divs.item(i).style.display="none"; 
} 
} 
function setdivvisible(id){//把指定id以外的层统统显示 
var divs=document.getElementsByTagName("DIV"); 
for(var i=0;i<divs.length;i++) 
{ 
if(divs.item(i).id!=id) 
divs.item(i).style.display="block"; 
} 
} 
function printpr() //预览函数 
{ 
pagesetup_null();//预览之前去掉页眉,页脚 
setdivhidden("div1");//打印之前先隐藏不想打印输出的元素 
var WebBrowser = '<OBJECT ID="WebBrowser1" WIDTH=0 HEIGHT=0 CLASSID="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"></OBJECT>'; 
document.body.insertAdjacentHTML('beforeEnd', WebBrowser);//在body标签内加入html(WebBrowser activeX控件) 
WebBrowser1.ExecWB(7, 1);//打印预览 
WebBrowser1.outerHTML = "";//从代码中清除插入的html代码 
pagesetup_default();//预览结束后页眉页脚恢复默认值 
setdivvisible("div1");//预览结束后显示按钮 
} 
function print() //打印函数 
{ 
pagesetup_null();//打印之前去掉页眉,页脚 
setdivhidden("div1"); //打印之前先隐藏不想打印输出的元素 
var WebBrowser = '<OBJECT ID="WebBrowser1" WIDTH=0 HEIGHT=0 CLASSID="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"></OBJECT>'; 
document.body.insertAdjacentHTML('beforeEnd', WebBrowser);//在body标签内加入html(WebBrowser activeX控件) 
WebBrowser1.ExecWB(6, 1);//打印 
WebBrowser1.outerHTML = "";//从代码中清除插入的html代码 
pagesetup_default();//打印结束后页眉页脚恢复默认值 
setdivvisible("div1");//打印结束后显示按钮 
} 
</script> 
<body> 
<div id=div0> 
<input type=button value=打印预览 onclick="printpr()"> 
<input type=button onClick="print()" value="打印"> 
表格一: 
</div> 
<div id=div1> 
<table> 
<tr><td>1111</td><td>1111</td><td>1111</td></tr> 
<tr><td>1111</td><td>1111</td><td>1111</td></tr> 
<tr><td>1111</td><td>1111</td><td>1111</td></tr> 
</table> 
</div> 
</body> 
</HTML> 

 

分享到:
评论

相关推荐

    javascript 打印内容方法小结

    就OK了 但是一般都是选择性打印所以会调用方法: 代码如下: function preview() { bdhtml=window.document.body[removed]; sprnstr=”&lt;!–startprint–&gt;”; eprnstr=”&lt;!–endprint–&gt;”; prnhtml=bdhtml....

    Xcode 8打印log日志的问题小结及解决方法

    刚开运行Xcode 8.0的时候,我们可能对打印的日志有一点不耐烦,怎么打印那么多有的没的。 我们先来看下如何禁用吧, 按步骤打开Product &gt; Scheme &gt; Edit Scheme 选择Run &gt; Argumens &gt; Environment Variables ;加入OS...

    实用Javascript调试技巧分享(小结)

    首先,alert只能打印出字符串,如果打印的对象不是String,则会调用toString()方法将该对象转成字符串(比如转成[object Object]这种),所以除非你打印String类型的对象,其他什么信息都获取不到。其次,alert会...

    javascript网页特效实例大全

    1.8 小结 26 第2章 javascript中事件. 窗口和框架的处理 27 2.1 事件处理的基本概念 28 2.2 常用事件及处理 28 2.2.1 浏览器事件 29 2.2.2 鼠标事件 29 2.2.3 文本框事件 30 2.2.4 其他事件 31 2.3 什么是...

    JavaScript累加、迭代、穷举、递归等常用算法实例小结

    本文实例讲述了JavaScript迭代、迭代、穷举、递归等常用算法。分享给大家供大家参考,具体如下: 累加和累积 累加:将一系列的数据加到一个变量里面。最后的得到累加的结果 比如:将1到100的数求累加和 小球从高处落...

    ActionScript开发技术大全

    1.3小结 8 第2章搭建ActionScript3.0开发环境 9 2.1搭建基于FlashCS3IDE的开发环境 9 2.1.1安装FlashCS3ID 9 2.1.2安装FlashCS3IDEupdate9.0.2 11 2.1.3在FlashCS3IDE下创建ActionScript3.0项目 11 2.2搭建基于Flex...

    Eclipse_Swt_Jface_核心应用_部分19

    1.7 本章小结 10 第2章 配置SWT开发环境 11 2.1 下载和安装Eclipse 11 2.1.1 Eclipse下载页面介绍 11 2.1.2 下载Eclipse 12 2.1.3 安装Eclipse语言包 14 .2.1.4 在不同的语言中切换 15 2.2 直接获取...

    Flex企业应用开发实战源代码

    10.1.2 使用navigateToURL方法调用JavaScript 302 10.1.3 ExternalInterface API 303 10.2 在Flex中使用Flash CS所开发的控件 306 10.3 Flex访问.Net 308 10.3.1 Fluorine的安装和配置 309 10.3.2 Flex通过...

    SEO编程PHP中文版

    1.4 小结 第2章 SEO基础知识 2.1 SEO概述 2.1.1 链接价值 2.1.2 Google PageRank 2.1.3 可用性和可达性 2.2 搜索引擎排名因素 2.2.1 页上因素 2.2.2 可见的页上因素 2.2.3 不可见的页上因素 2.2.4 基于...

    TCP/IP技术大全(中文PDF非扫描版)

    1.3 小结 7 第2章 TCP/IP和Internet 8 2.1 一段历史 8 2.1.1 ARPANET 8 2.1.2 TCP/IP 9 2.1.3 国家科学基金会(NSF) 9 2.1.4 当今的Internet 12 2.2 RFC和标准化过程 12 2.2.1 获得RFC 13 2.2.2 RFC索引 13 2.2.3 ...

    TCP-IP技术大全

    1.3 小结 7 第2章 TCP/IP和Internet 8 2.1 一段历史 8 2.1.1 ARPANET 8 2.1.2 TCP/IP 9 2.1.3 国家科学基金会(NSF) 9 2.1.4 当今的Internet 12 2.2 RFC和标准化过程 12 2.2.1 获得RFC 13 2.2.2 RFC索引 13 2.2.3 ...

    TCP/IP教程TCP/IP基础

    1.3 小结 7 第2章 TCP/IP和Internet 8 2.1 一段历史 8 2.1.1 ARPANET 8 2.1.2 TCP/IP 9 2.1.3 国家科学基金会(NSF) 9 2.1.4 当今的Internet 12 2.2 RFC和标准化过程 12 2.2.1 获得RFC 13 2.2.2 RFC索引 13 2.2.3 ...

    TCP/IP技术大全

    1.3 小结 7 第2章 TCP/IP和Internet 8 2.1 一段历史 8 2.1.1 ARPANET 8 2.1.2 TCP/IP 9 2.1.3 国家科学基金会(NSF) 9 2.1.4 当今的Internet 12 2.2 RFC和标准化过程 12 2.2.1 获得RFC 13 2.2.2 RFC索引 13 2.2.3 ...

Global site tag (gtag.js) - Google Analytics