-
Notifications
You must be signed in to change notification settings - Fork 27
/
jquery.printFinal.js
96 lines (82 loc) · 3.91 KB
/
jquery.printFinal.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
// -----------------------------------------------------------------------
//printFinal 1.0
//jQuery 打印插件
//作者:JsonZou
//时间:2013-10-31
//------------------------------------------------------------------------
(function($) {
var printFinal={};//printFinal应用容器
var printOption={};//printFinal应用配置
printFinal.defaults={//printFinal默认配置
preview:false,//打印预览
impcss:true,//引入css文件
watermark:null//水印,1.0版本暂不支持
};
printFinal.print=function(options){
//0.0打印参数、选项初始化
printOption=$.extend({},printFinal.defaults,options);
var $e= (this instanceof $) ? this : $(this);
//1.0打印容器创建
//预览模式下,第一次点击显示预览,第二次点击隐藏预览
if(printOption.preview){
if($("div.printfinal-container-div-0").length>0){
if($("div.printfinal-container-div-0").is(":hidden")){
$("div.printfinal-container-div-0").show();
}else{
$("div.printfinal-container-div-0").hide();
}
return;
}
}else{
$("div.printfinal-container-div-0").remove();
}
//打印容器
var $containerDiv=$("<div class='printfinal-container-div-0' style='border:1px solid #ccc;display:none;position:fixed;background:white;left:0px; bottom:0px;width:100%' ></div>");
//打印容器top
var $containerTopDiv=$("<div class='printfinal-container-top-div-0' style='margin:0px 0px 5px 0px; padding:3px;padding-left:5px;color:#333;width:100%;height:25px;line-height:25px;overflow:hidden;border-bottom:1px solid #ddd;text-align:left;font-size:14px;font-weight:bold;'></div>");
//打印容器top显示的标题
var $containerTopTitleDiv=$("<div class='printfinal-container-top-title-div-0' style='width:100px;float:left;'>打印预览</div>");
//打印容器top显示的关闭按钮div
var $containerTopCloseBtnDiv=$("<div class='printfinal-container-top-closebtn-div-0' style='float:left;position:absolute;right:3px;margin:0px 5px 0px 0px;width:52px;height:22px;'></div>");
//打印容器top关闭按钮
var $containerTopCloseBtnDivBtn=$("<button class='printfinal-container-top-closebtn-div-btn-0' style='font-weight:bold;color:#444;border:1px solid #ddd;background:#fff;line-height:22px;'>关闭</button>");
//打印内容iframe
var $containerContentIframe = $("<iframe style='margin-left:5px;' width='100%' marginwidth='0' marginheight='0' frameborder='0' scrolling='auto'></iframe>");
//装载容器
$containerDiv.append($containerTopDiv);
$containerTopDiv.append($containerTopTitleDiv);
$containerTopDiv.append($containerTopCloseBtnDiv);
$containerTopCloseBtnDiv.append($containerTopCloseBtnDivBtn);
$containerDiv.append($containerContentIframe);
$("body").append($containerDiv);
//关闭事件
$containerTopCloseBtnDivBtn.click(function(){$containerDiv.remove();});
if(printOption.preview){$containerDiv.show();}
var iDoc = $containerContentIframe[0].contentWindow.document;
//2.0引入css文件
if (printOption.impcss)
{
if ($("link[media=print]").length > 0)
{
$("link[media=print]").each( function() {
iDoc.write("<link type='text/css' rel='stylesheet' href='" + $(this).attr("href") + "' media='print' />");
});
}
else
{
$("link").each( function() {
iDoc.write("<link type='text/css' rel='stylesheet' href='" + $(this).attr("href") + "' />");
});
}
}
//3.0导入打印内容
iDoc.write($($('<div></div>').html($e.clone())).html())
iDoc.close();
//4.0打印
if(!printOption.preview){
setTimeout( function() {$containerContentIframe[0].contentWindow.print()}, 1000);
}
}
//5.0扩展到jQuery方法
$.fn.printFinal=printFinal.print;
})(jQuery);