`
cindylu520
  • 浏览: 148050 次
  • 性别: 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 打印内容方法小结

    以下是一些关于JavaScript中打印内容方法的小结: 1. 基本打印方法:window.print(); 这是JavaScript中最简单的打印方法。只需调用`window.print();`就能弹出打印对话框,用户可以打印整个页面或页面上的部分内容。...

    js的继承方法小结(prototype、call、apply)(推荐).docx

    ### JavaScript 的继承方法小结(Prototype、Call、Apply) #### 一、JavaScript 原型继承 -- Prototype 在 JavaScript 中,“一切皆对象”。通过 `new` 关键字创建的对象是函数对象,而直接赋值的对象则是一般...

    javascript知识小结

    如果JavaScript文件存储为`.js`扩展名的外部文件,我们可以在`&lt;head&gt;`标签内使用`文件名"&gt;&lt;/script&gt;`引入,这样可以提高页面加载速度,因为脚本的下载和执行可以与页面渲染并行。 `Window`对象是JavaScript中的顶级...

    vue中将网页打印成pdf实例代码

    小结 在本文中,我们介绍了如何使用Vue将网页打印成PDF的实例代码。我们使用html2canvas和JsPDF两个插件库来实现将网页元素转换为Canvas元素,然后将Canvas元素转换为PDF文件。希望本文能够对大家的学习有所帮助,...

    Vue使用lodop实现打印小结

    最终,实际使用时,可以通过编写Vue组件和方法,结合LodopFuncs.js中的getLodop函数,来调用LODOP对象的各种方法进行打印。例如,可以使用ADD_PRINT_TEXT添加文本内容到打印队列,用PRINT_INIT和PREVIEW方法来初始化...

    web打印小结

    本文主要总结了一种解决Web套打问题的方法,即利用PDF打印和一款名为Lodop的Web打印工具。 首先,对于PDF打印,这是一种普遍采用的方案,尤其适合需要精确格式控制的打印任务。在实施PDF打印时,步骤通常包括: 1. ...

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

    本文将针对这一问题进行小结,并提供相应的解决方法。 首先,我们来了解一下如何禁用Xcode 8中的部分log日志。在开发过程中,如果想要去除那些“烦人的log日志”,可以通过以下步骤操作: 1. 打开Xcode菜单栏,...

    js获取IP地址的方法小结

    这段代码中,通过 `&lt;script&gt;` 标签请求了一个QQ的IP接口,此接口返回包含IP地址信息的JavaScript代码,然后JavaScript再将IP信息打印到页面上。其中`IPData[0]`是用户的IP地址,`IPData[2]`是国家信息。 和方法一...

    firbug之console 小结

    在本文中,我们将深入探讨Firbug的console小结,包括它提供的各种命令、用法以及在实际开发中的应用。 一、console对象的基本用法 1. console.log():这是最常用的方法,用于输出信息到控制台。例如: ```...

    JavaScript中循环遍历Array与Map的方法小结

    本文将详细讲解几种不同的遍历方法,帮助初学者更好地理解和掌握JavaScript的基础知识。 1. **For循环**: - `for`循环是最基础的遍历方式,例如eg1和eg5所示,通过索引`i`访问数组元素。eg1是正向遍历,eg5在遍历...

    js的继承方法小结(prototype、call、apply)(推荐)

    JavaScript中的继承是面向对象编程的重要概念,它允许一个对象(子对象)继承另一个对象(父对象)的属性和方法。本文主要讨论了三种常见的继承方式:`prototype`、`call` 和 `apply`。 ### 1. Prototype 原型继承 ...

    JavaScript事件学习小结(三)js事件对象

    这将在控制台打印出事件类型,如“click”。 三、DOM中的事件对象 在DOM0级和DOM2级事件处理程序中,事件对象作为函数参数传递。例如: ```javascript var btn = document.getElementById("btn"); btn.onclick = ...

    基于BootStrap Metronic开发框架经验小结【九】实现Web页面内容的打印预览和保存操作

    【基于BootStrap Metronic开发框架经验小结【九】实现Web页面内容的打印预览和保存操作】 在Web开发中,实现页面内容的打印预览和保存功能是非常常见的需求。传统的解决方案,如使用ActiveX控件LODOP,虽然在早期...

    ASP.NET学习小结

    首先,JavaScript小技巧是前端开发的重要部分。在ASP.NET中,JavaScript通常用于提供页面的动态效果和用户交互。它可以与ASP.NET服务器控件配合使用,通过AJAX(Asynchronous JavaScript and XML)技术实现无刷新...

    javascript新手语法小结

    JavaScript是Web开发中不可或缺的一部分,尤其对于初学者来说,掌握其基本语法至关重要。本文将针对JavaScript的新手语法进行总结,包括弹出对话框、获取系统时间、事件处理、循环、函数以及条件判断。 1. 弹出...

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

    传统的`alert`方法虽然简单,但存在诸多限制,如只能打印字符串、阻塞UI线程等,因此并不推荐使用。相反,`console`对象提供了丰富的API,可以实现更精细化的调试。 1. **避免使用`alert`**: `alert`在打印非字符...

    华为OD机试C卷- 打印任务排序(Java & JS & Python & C).md-私信看全套OD代码及解析

    #### 小结 本题主要考察了应聘者对数据结构的理解以及如何应用这些数据结构来解决问题的能力。通过实现这一题目,不仅可以提升应聘者在实际工作中处理类似问题的能力,同时也能加深对应聘者编程技巧的了解。

    node.js操作mongodb学习小结

    在上述代码中,`find`方法的回调函数会遍历查询结果集,如果遍历到数据项,会打印该数据项的`name`和`age`字段。 最后,文档提到了增删改查(CRUD)操作的示例代码可以在`node-mongodb-native`的官方文档中找到,...

Global site tag (gtag.js) - Google Analytics