目前浏览器使用JS实现打印。实现JS打印的方式有很多,但是通过兼容各个浏览器来实现打印预览是比较棘手的。现在,我们将记录实施的内容和遇到的问题。希望有大牛看到后能回答问题。在这里谢谢你。
1.方法1。JS实现打印
方法1: window.print()
window . print();将弹出一个打印对话框,并打印window.document.body.innerHTML中的内容。下面是一个从网上捡来的部分打印的例子,它的缺点是打印会修改页面的内容。
!DOCTYPE html html head meta http-equiv=' Content-Type ' Content=' text/html;Charset=utf-8'/title部分打印大小写/title脚本类型=' text/JavaScript '函数doprint(){ bdhtml=window . document . body . innerhtml;sprnstr='!-start print-';eprnstr='!-end print-';prnhtml=bdhtml . substr(bdhtml . indexof(SPR nstr)17);prnhtml=prnhtml.substring(0,prnhtml . indexof(EPR nstr));window . document . body . innerhtml=prnhtml;window . print();}/脚本/不需要打印的头体P1/p p2不要在这里打印/p!开始打印!-注意在html - h1打印标题/h1 pprint内容中添加星号和end两个标签~ ~ /h1 p!-end print-button type=' button ' onclick=' doprint()' print/button p在不打印的地方,ahahahahaha/p p2/p/body/html方法2:使用html标记对象引入Webbrowser控件
这样只兼容IE,其他浏览器都不能用。同时可以使用IE10以下的浏览器。调用方法如下:
body对象id=' WebBrowser ' class id=clsid :8856 f 961-340 a-11d 0-a96 B- 00c 04 FD 705 a 2高度='0 '宽度=' 0 '/对象/body脚本WebBrowser。ExecWB(1,1) //打开WebBrowser。ExecWB(2,1) //现在关闭所有IE窗口,打开一个新窗口WebBrowser。ExecWB(4,1) //保存网页//-常用1) //打印WebBrowser。ExecWB(7,1) //打印预览WebBrowser。ExecWB(8,1) //打印页面设置//-。1) //检查网页属性WebBrowser。ExecWB(15,1) //取消WebBrowser。ExecWB(17,1) //选择全部WebBrowser。ExecWB(22,1) //刷新WebBrowser。ExecWB(45,1) //关闭表单,不显示提示/脚本。这种方法的优点是可以在IE下弹出打印预览,是一种非常用户友好的打印功能,但遗憾的是较高版本的IE浏览器不支持WebBrowser
方法3:使用document.execCommand(“打印”)
此方法也兼容所有版本的浏览器。像window.print(),它启动打印对话框,chrome的打印对话框有自己的预览功能,但IE和Firefox只弹出打印设置对话框,没有预览功能。
方法4:使用JQuery插件
使用jQuery浏览插件可以轻松执行部分打印。常用的插件包括:
1)jquery.print.js下载地址:https://github.com/DoersGuild/jQuery.print
2)jquery.print-preview.js的下载地址:https://github.com/etimbo/jquery-print-preview-plugin
这两种方法很容易使用,1)通过$('#id ')。打印(/*选项*/);调用;2)传递$('#id ')。print area(/* options */);其中,选项选项可以从下载地址下载,然后读取示例代码。一般来说,不需要传输选项。示例代码如下:
html头元http-equiv=Content-Type Content=' text/html;charset=utf-8 ' title jquery print/title script type=' text/JAVAScript ' src=' http :/js/jquery-3 . 1 . 1 . min . js/'脚本脚本语言='javascript' src='http:/js/jquery . print . js '/script/head body style=' margin :0 auto;' text-align : center;'button id=' button _ print ' name=' button _ print ' onclick=' JavaScript : print it()' print/button div id=' ganburenmianbaio ' class=wordspection 1 style=' width :750 px;margin:0 auto文本对齐:居中;垂直对齐:中间;/div/body script language=' JavaScript ' function print it(){ $(' # ganburenmianbaio ')。print({iframe:true,prepend : ' br/' });} /script /html方法5:使用浏览器打印第三方插件
这种方法需要用户的浏览器安装相关的第三方插件,用户体验不好,这里就不详细描述了。
2.打印预览
win10自带的Chrome浏览器和IE浏览器调用打印。弹出的打印设置界面包含打印预览部分,可以通过调用上面的打印功能来实现。
在IE9之后的版本中,Firefox不支持webbrowser控件,JS也无法调用浏览器的打印预览功能。我们只能用iframe模拟打印预览对话框,在对话框中显示需要打印的内容,然后调用打印功能实现打印。
1)jquery打印预览插件
jquery.print-preview.js下载地址:https://github.com/etimbo/jquery-print-preview-plugin
实现效果如下(其自动样例代码)
2)网络浏览器控制打印预览
IE8及以下可以调用WebBrowser。ExecWB(7,1)函数弹出浏览器的打印预览对话框。使用此功能的好处是用户可以在打印预览对话框中调整页边距、页眉和页脚。
下面发布的是设置页边距、页眉和页脚的JS代码
//取得页面打印设置的原参数数据函数页setup _ temp(){ try { var Wsh=new ACTIVEX对象(' Wscript .shell’);HKEY _基='表头;//取得页眉默认值head=Wsh .遗憾(HKEY)鲁特HKEY _小路HKEY _基);HKEY _基='页脚;//取得页脚默认值英尺=Wsh .遗憾(HKEY)鲁特HKEY _小路HKEY _基);HKEY _键='边距_底部;//取得下页边距底部=Wsh .遗憾(HKEY)鲁特HKEY _小路HKEY _基);HKEY _键='左边距;//取得左页边距左=Wsh .遗憾(HKEY)鲁特HKEY _小路HKEY _基);HKEY _键='边距_右;//取得右页边距右=Wsh .遗憾(HKEY)鲁特HKEY _小路HKEY _基);HKEY _键='边距_顶;//取得上页边距top=Wsh .遗憾(HKEY)鲁特HKEY _小路HKEY _基);} catch(e){ //alert('不允许微软倡导的微软倡导的ActiveX网络化多媒体对象技术网络化多媒体对象技术控件');} } //设置网页打印的页眉页脚和页边距,注册表里的单位是英寸,打印设置中是毫米,1英寸=25.4毫米函数页面设置_ Null(){尝试{ var Wsh=new ActiveX对象(' Wscript .shell’);HKEY _基='表头;//设置页眉(为空)Wsh .正则表达式(HKEY _根HKEY _路径HKEY _密钥' ');HKEY _基='页脚;//设置页脚(为空)Wsh .正则表达式(HKEY _根HKEY _路径HKEY _密钥' ');HKEY _键='边距_底部;//设置下页边距(0) Wsh .RegWrite(HKEY _ Root HKEY _ Path HKEY _ Key,' 0.6 ');HKEY _键='左边距;//设置左页边距(0) Wsh .RegWrite(HKEY _ Root HKEY _ Path HKEY _ Key,' 0.3 ');HKEY _键='边距_右;//设置右页边距(0) Wsh .RegWrite(HKEY _ Root HKEY _ Path HKEY _ Key,' 0.3 ');HKEY _键='边距_顶;//设置上页边距(8) Wsh .RegWrite(HKEY _ Root HKEY _ Path HKEY _ Key,' 0.6 ');} catch(e){ //alert('不允许微软倡导的微软倡导的ActiveX网络化多媒体对象技术网络化多媒体对象技术控件');} } //设置网页打印的页眉页脚和页边距为默认值函数页面设置_ Default(){尝试{ var Wsh=new ActiveX对象(' Wscript .shell’);HKEY _基='表头;HKEY _基='表头;//还原页眉Wsh .RegWrite(HKEY _根HKEY _路径HKEY _密钥,负责人);HKEY _基='页脚;//还原页脚Wsh .正则表达式(HKEY _鲁特HKEY _小路HKEY _基,脚);HKEY _键='边距_底部;//还原下页边距Wsh .RegWrite(HKEY _根HKEY _路径HKEY _密钥,底部);HKEY _键='左边距;//还原左页边距Wsh .RegWrite(HKEY _根HKEY _路径HKEY _密钥,左);HKEY _键='边距_右;//还原右页边距Wsh .RegWrite(HKEY _根HKEY _路径HKEY _密钥,右);HKEY _键='边距_顶;//还原上页边距Wsh .RegWrite(HKEY _根HKEY _路径HKEY _密钥,顶部);} catch(e){ //alert('不允许微软倡导的微软倡导的ActiveX网络化多媒体对象技术网络化多媒体对象技术控件');} } 使用该函数,会弹出
通过网页修改微软倡导的微软倡导的ActiveX网络化多媒体对象技术网络化多媒体对象技术安全设置,添加信任站点,禁用该弹出窗口提示,代码如下:
函数ActiveX控件(){ try { var WshShell=new ActiveX对象(' WScript .shell’);//添加信任站点(http://127.0.0.1) WshShell .RegWrite(' HKEY _当前_用户\软件 微软 窗口 当前版本 互联网设置 区域映射 范围 范围100\ ',' ');地狱.RegWrite(' HKEY _当前_用户\软件 微软 窗口 当前版本 互联网设置 区域映射 范围 范围100 :范围',' 127 .0 .0 .1 ');地狱.RegWrite(' HKEY _当前_用户 软件 微软 Windows 当前版本 互联网设置 区域映射 范围 范围100\http ',' 2 ',' REG _ DWORD ');//修改工业工程控件安全设置: 1本地内部网络区域地狱.RegWrite('HKEY _当前_用户\软件\微软 Windows 当前版本 互联网设置 区域 1 1001 '、' 0 '、' REG _ DWORD ');地狱.RegWrite('HKEY _当前_用户\软件\微软 Windows 当前版本 互联网设置 区域 1 1004 '、' 0 '、' REG _ DWORD ');地狱.RegWrite('HKEY _当前_用户\软件\微软 Windows 当前版本 互联网设置 区域 1 1200 '、' 0 '、' REG _ DWORD ');地狱.RegWrite('HKEY _当前_用户\软件\微软 Windows 当前版本 互联网设置 区域 1 1201 '、' 0 '、' REG _ DWORD ');地狱.RegWrite('HKEY _当前_用户\软件\微软 Windows 当前版本 互联网设置 区域 1 1405 '、' 0 '、' REG _ DWORD ');地狱.RegWrite('HKEY _当前_用户\软件\微软 Windows 当前版本 互联网设置 区域 1 2201 '、' 0 '、' REG _ DWORD ');//修改工业工程控件安全设置:2受信任的站点区域地狱.RegWrite('HKEY _当前_用户\软件\微软 Windows 当前版本 互联网设置 区域 2 1001 '、' 0 '、' REG _ DWORD ');地狱.RegWrite('HKEY _当前_用户\软件\微软 Windows 当前版本 互联网设置 区域 2 1004 '、' 0 '、' REG _ DWORD ');地狱.RegWrite('HKEY _当前_用户\软件\微软 Windows 当前版本 互联网设置 区域 2 1200 '、' 0 '、' REG _ DWORD ');地狱.RegWrite('HKEY _当前_用户\软件\微软 Windows 当前版本 互联网设置 区域 2 1201 '、' 0 '、' REG _ DWORD ');地狱.RegWrite('HKEY _当前_用户\软件\微软 Windows 当前版本 互联网设置 区域 2 1405 '、' 0 '、' REG _ DWORD ');地狱.RegWrite('HKEY _当前_用户\软件\微软 Windows 当前版本 互联网设置 区域 2 2201 '、' 0 '、' REG _ DWORD ');//修改工业工程控件安全设置:3互联网区域地狱.RegWrite('HKEY _当前_用户\软件\微软 Windows 当前版本 互联网设置 区域 3 1001 '、' 0 '、' REG _ DWORD ');地狱.RegWrite('HKEY _当前_用户\软件\微软 Windows 当前版本 互联网设置 区域 3 1004 '、' 0 '、' REG _ DWORD ');地狱.RegWrite('HKEY _当前_用户\软件\微软 Windows 当前版本 互联网设置 区域 3 1200 '、' 0 '、' REG _ DWORD ');地狱.RegWrite('HKEY _当前_用户\软件\微软 Windows 当前版本 互联网设置 区域 3 1201 '、' 0 '、' REG _ DWORD ');地狱.RegWrite('HKEY _当前_用户\软件\微软 Windows 当前版本 互联网设置 区域 3 1405 '、' 0 '、' REG _ DWORD ');地狱.RegWrite('HKEY _当前_用户\软件\微软 Windows 当前版本 互联网设置 区域 3 2201 '、' 0 '、' REG _ DWORD ');//禁用Winxp弹出窗口阻止程序地狱.RegWrite(' HKEY _当前_用户 软件 微软 互联网浏览器 新窗口 弹出窗口','否');}catch(e){ //alert('不允许微软倡导的微软倡导的ActiveX网络化多媒体对象技术网络化多媒体对象技术控件');} } 3.问题
1)网页修改微软倡导的微软倡导的ActiveX网络化多媒体对象技术网络化多媒体对象技术安全设置该段代码也是必须在启用微软倡导的微软倡导的ActiveX网络化多媒体对象技术网络化多媒体对象技术的条件下调用成功,是需要用户在互联网的配置项中设置的(如下图),如何才能自动启用该插件?
2)铬、火狐如何通过射流研究…设置页边距、页眉、页脚?
3)工业工程高版本浏览器、火狐如何通过射流研究…弹出浏览器自己的打印预览?
以上就是本文的全部内容。希望对大家的学习有帮助,支持我们。