打印本身比较简单,但要考虑到具体的需求。比如

1. 多浏览器:

if (isIE()) {
//打印预览
WebBrowser1.execWB(7, 1);
}
else {
window.print();
}

如代码所示, IE浏览器与其他浏览器的使用的方式是不一样的,如在chrome浏览器中使用window.print显示的是打印预览,而在IE中显示的是打印界面(选择打印机),如果想在IE中显示打印预览,则需要在代码中增加如下的标签,在使用如上的WebBrowser1.

<OBJECT ID="WebBrowser1" WIDTH=0 HEIGHT=0 CLASSID="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"></OBJECT>

2. 局部打印。

一般js打印功能其实就是调用的页面的打印功能, 所以默认是打印整个页面,也就是document.body。如果要打印部分页面的话,可以有三种方案:

一是把要打印的DIV区域赋值给document.body, 待打印完成后,再还原。代码如下:

 var bodyHtml = document.body.innerHTML;//获取当前页的html代码
var divPrint = document.getElementById('divprint'); if (divPrint) {
document.body.innerHTML = divPrint.innerHTML;
if (isIE()) {
if (WebBrowser1) {
//打印预览
WebBrowser1.execWB(7, 1);
}
window.close();
}
else {
window.print();
}
}
document.body.innerHTML = bodyHtml;

二是把要打印的区域在新的页面中打开,再执行打印。

这里有个小提示,在新的页面中打开,我的处理方法是打开新页面时,隐藏要打印的页面,直接弹出打印预览,打印完成后直接关闭窗口,这样体验会好些。

三是使用CSS样式,这样就不打印指定样式的DIV,如下代码

    <style type="text/css" media="print">
.noprint {
display: none;
}
</style>

3. 取消页眉页角

打印预览时我们会发现,页眉页角的东西不是我们想要的,如果想要去掉的,最好的方式还是通过页面设置

如果是IE浏览器的话,可以通过代码来设置,但是需要对浏览器进行设置。

代码如下:

这段代码是从网上找地,特此说明!!!

var hkey_root,hkey_path,hkey_key;
hkey_root="HKEY_CURRENT_USER";
hkey_path="\\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) {
console.dir(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) {
console.dir(e);
}
}

javascript页面打印的更多相关文章

  1. 开源的javascript实现页面打印功能,兼容所有的浏览器(情况属实)

    这篇文章完全是属于技术文章,也是记录一下自己在项目当中遇到的坑爹问题啊,因为是B/S的程序,所以打印功能还是必须要有的,对于打印我选择了一个js插件,发现非常的简单和方便,所以这里拿出来和大家分享一下 ...

  2. Jqprint实现页面打印

    好些项目需要实现页面打印,特别是一些后台管理类系统,下面介绍一款轻量级的打印插件: 1.实现页面打印要引入jQuery和Jqprint.点击下载Jqprint插件 <script languag ...

  3. js调用页面打印

    ----------------------调用页面打印-------------------------------- <body> <div id="divPrint& ...

  4. JSP 页面打印

    <HTML><HEAD><TITLE>javascript打印-打印页面设置-打印预览代码</TITLE> <META http-equiv=Co ...

  5. asp.net调用Lodop实现页面打印或局部打印,可进行打印设置或预览

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="WebPrint.aspx.cs ...

  6. android网页打印,安卓网页打印,h5页面打印,浏览器打印,js打印工具

    Android设备打印比较麻烦,一般设备厂商都提供原生app开发的SDK,我们web开发者为难了,不会原生开发啊 给大家提供一个思路,实现web加壳,利用打印浏览器实现 简单来说就是把我们的web页面 ...

  7. Web系统页面打印技术实现与分析

    1 Web页面打印概述应用WEB化,不论对开发商,还是对用户来说,实在是一种很经济的选择,因为基于WEB的应用,客户端的规则很简单,容易学习,容易维护,容易发布.在WEB系统中,打印的确是个烦人的问题 ...

  8. 使用jqprint插件完成页面打印

    使用jqprint插件完成页面打印 jqprint是一个基于jQuery编写的页面打印的一个小插件,但是不得不承认这个插件确实很厉害,最近的项目中帮了我的大忙,在Web打印的方面,前端的打印基本是靠w ...

  9. Jquery 页面打印

    <script src="~/Scripts/js/dist/jquery.jqprint-0.3.js"></script> <script typ ...

随机推荐

  1. shared_ptr & weak_ptr

    shared_ptr <1> 类模板说明 namespace boost { class bad_weak_ptr: public std::exception; template< ...

  2. ipad4丢失查找攻略

    如果不幸你的ipad丢失了,你可以通过find my iphone的软件来.它会帮你定位你ipad的位置.还有一种方式是登录你的icloud里面有个功能是查找我的iphone. 你还可以点击下面这个链 ...

  3. phantomjs学习之截图

    1.创建pageload.js文件: pageload.js var page = require('webpage').create(); var address = 'https://www.ba ...

  4. finereport-JS

    JS实现定时刷新报表 setInterval("self.location.reload();",10000); //10000ms即每10s刷新一次页面. 注:对于cpt报表,若 ...

  5. jquery全景拖动查看效果

    http://sc.chinaz.com/jiaoben/140722166830.htm

  6. 利用python实现TCP和UDP服务器

    利用python的socket模块可以实现基本的网络编程,并且只限于一对一的连接.当然,也可以在其基础上实现一个网络服务器,但由于太底层这种做法不被推荐.其实如果要实现一个网络服务器很简单,调用pyt ...

  7. SOE 中调用第三方dll

    一.简介 在利用soe实现server的扩展的时候,有些时候,需要调用第三方的dll库.官网中给出了明确的说明,soe中是可以添加第三方的dll文件,但是一直没有测试.按照官方的步骤应该是一个非常的简 ...

  8. Piggy-Bank---hdu1114(完全背包)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1114 题意是有一个存钱罐,当它是空的时候重量为E,满的时候重量为F:已知存钱罐里面有 n 种钱,每种钱 ...

  9. SQL Server中行列转换 Pivot UnPivot

    PIVOT用于将列值旋转为列名(即行转列),在SQLServer 2000可以用聚合函数配合CASE语句实现 PIVOT的一般语法是:PIVOT(聚合函数(列)FOR 列 in (-) )AS P 完 ...

  10. pandas(九)数据转换

    移除重复数据 dataframe中常常会出现重复行,DataFrame对象的duplicated方法返回一个布尔型的Series对象,可以表示各行是否是重复行.还有一个drop_duplicates方 ...