|
@@ -0,0 +1,160 @@
|
|
1
|
+/* eslint-disable */
|
|
2
|
+var CreatedOKLodop7766 = null, CLodopIsLocal
|
|
3
|
+
|
|
4
|
+// ====判断是否需要 Web打印服务CLodop:===
|
|
5
|
+// ===(不支持插件的浏览器版本需要用它)===
|
|
6
|
+export function needCLodop () {
|
|
7
|
+ try {
|
|
8
|
+ let ua = navigator.userAgent
|
|
9
|
+ if (ua.match(/Windows\sPhone/i)) {
|
|
10
|
+ return true
|
|
11
|
+ }
|
|
12
|
+ if (ua.match(/iPhone|iPod/i)) {
|
|
13
|
+ return true
|
|
14
|
+ }
|
|
15
|
+ if (ua.match(/Android/i)) {
|
|
16
|
+ return true
|
|
17
|
+
|
|
18
|
+ }
|
|
19
|
+ if (ua.match(/Edge\D?\d+/i)) {
|
|
20
|
+ return true
|
|
21
|
+ }
|
|
22
|
+
|
|
23
|
+ let verTrident = ua.match(/Trident\D?\d+/i)
|
|
24
|
+ let verIE = ua.match(/MSIE\D?\d+/i)
|
|
25
|
+ let verOPR = ua.match(/OPR\D?\d+/i)
|
|
26
|
+ let verFF = ua.match(/Firefox\D?\d+/i)
|
|
27
|
+ let x64 = ua.match(/x64/i)
|
|
28
|
+ if ((!verTrident) && (!verIE) && (x64)) {
|
|
29
|
+ return true
|
|
30
|
+ }
|
|
31
|
+ else if (verFF) {
|
|
32
|
+ verFF = verFF[0].match(/\d+/)
|
|
33
|
+ if ((verFF[0] >= 41) || (x64)) {
|
|
34
|
+ return true
|
|
35
|
+ }
|
|
36
|
+ } else if (verOPR) {
|
|
37
|
+ verOPR = verOPR[0].match(/\d+/)
|
|
38
|
+ if (verOPR[0] >= 32) {
|
|
39
|
+ return true
|
|
40
|
+ }
|
|
41
|
+
|
|
42
|
+ } else if ((!verTrident) && (!verIE)) {
|
|
43
|
+ let verChrome = ua.match(/Chrome\D?\d+/i)
|
|
44
|
+ if (verChrome) {
|
|
45
|
+ verChrome = verChrome[0].match(/\d+/)
|
|
46
|
+ if (verChrome[0] >= 41) {
|
|
47
|
+ return true
|
|
48
|
+ }
|
|
49
|
+ }
|
|
50
|
+ }
|
|
51
|
+ return false
|
|
52
|
+ } catch (err) {
|
|
53
|
+ return true
|
|
54
|
+ }
|
|
55
|
+}
|
|
56
|
+
|
|
57
|
+// ====页面引用CLodop云打印必须的JS文件,用双端口(8000和18000)避免其中某个被占用:====
|
|
58
|
+if (needCLodop()) {
|
|
59
|
+ let src1 = 'http://localhost:8000/CLodopfuncs.js?priority=1'
|
|
60
|
+ let src2 = 'http://localhost:18000/CLodopfuncs.js?priority=0'
|
|
61
|
+ let head = document.head || document.getElementsByTagName('head')[0] || document.documentElement
|
|
62
|
+ let oscript = document.createElement('script')
|
|
63
|
+ oscript.src = src1
|
|
64
|
+ head.insertBefore(oscript, head.firstChild)
|
|
65
|
+ oscript = document.createElement('script')
|
|
66
|
+ oscript.src = src2
|
|
67
|
+ head.insertBefore(oscript, head.firstChild)
|
|
68
|
+ CLodopIsLocal = !!((src1 + src2).match(/\/\/localho|\/\/127.0.0./i))
|
|
69
|
+}
|
|
70
|
+
|
|
71
|
+// ====获取LODOP对象的主过程:====
|
|
72
|
+export function getLodop (oOBJECT, oEMBED) {
|
|
73
|
+ let strHtmInstall = `<br><font color='#FF00FF'>打印控件未安装!点击这里<a href='install_lodop32.exe' target='_self'>执行安装</a>,安装后请刷新页面或重新进入。</font>`
|
|
74
|
+ let strHtmUpdate = `<br><font color='#FF00FF'>打印控件需要升级!点击这里<a href='install_lodop32.exe' target='_self'>执行升级</a>,升级后请重新进入。</font>`
|
|
75
|
+ let strHtm64_Install = `<br><font color='#FF00FF'>打印控件未安装!点击这里<a href='install_lodop64.exe' target='_self'>执行安装</a>,安装后请刷新页面或重新进入。</font>`
|
|
76
|
+ let strHtm64_Update = `<br><font color='#FF00FF'>打印控件需要升级!点击这里<a href='install_lodop64.exe' target='_self'>执行升级</a>,升级后请重新进入。</font>`
|
|
77
|
+ let strHtmFireFox = `<br><br><font color='#FF00FF'>(注意:如曾安装过Lodop旧版附件npActiveXPLugin,请在【工具】->【附加组件】->【扩展】中先卸它)</font>`
|
|
78
|
+ let strHtmChrome = `<br><br><font color='#FF00FF'>(如果此前正常,仅因浏览器升级或重安装而出问题,需重新执行以上安装)</font>`
|
|
79
|
+ let strCLodopInstall_1 = `<br><font color='#FF00FF'>Web打印服务CLodop未安装启动,点击这里<a href='CLodop_Setup_for_Win32NT.exe' target='_self'>下载执行安装</a>`
|
|
80
|
+ let strCLodopInstall_2 = `<br>(若此前已安装过,可<a href='CLodop.protocol:setup' target='_self'>点这里直接再次启动</a>)`
|
|
81
|
+ let strCLodopInstall_3 = `,成功后请刷新本页面。</font>`
|
|
82
|
+ // let strCLodopUpdate = `<br><font color='#FF00FF'>Web打印服务CLodop需升级!点击这里<a href='CLodop_Setup_for_Win32NT.exe' target='_self'>执行升级</a>,升级后请刷新页面。</font>`
|
|
83
|
+ let LODOP
|
|
84
|
+ try {
|
|
85
|
+ let ua = navigator.userAgent
|
|
86
|
+ let isIE = !!(ua.match(/MSIE/i)) || !!(ua.match(/Trident/i))
|
|
87
|
+ if (needCLodop()) {
|
|
88
|
+ try {
|
|
89
|
+ LODOP = getCLodop()
|
|
90
|
+ } catch (err) { }
|
|
91
|
+ if (!LODOP && document.readyState !== 'complete') {
|
|
92
|
+ console.log(LODOP)
|
|
93
|
+ alert('网页还没下载完毕,请稍等一下再操作.')
|
|
94
|
+ return
|
|
95
|
+ }
|
|
96
|
+ if (!LODOP) {
|
|
97
|
+ document.body.innerHTML = strCLodopInstall_1 + (CLodopIsLocal ? strCLodopInstall_2 : '') + strCLodopInstall_3 + document.body.innerHTML
|
|
98
|
+ return
|
|
99
|
+ } else {
|
|
100
|
+ // if (CLODOP.CVERSION < '3.0.4.8') {
|
|
101
|
+ // document.body.innerHTML = strCLodopUpdate + document.body.innerHTML
|
|
102
|
+ // }
|
|
103
|
+ if (oEMBED && oEMBED.parentNode) {
|
|
104
|
+ oEMBED.parentNode.removeChild(oEMBED)
|
|
105
|
+ }
|
|
106
|
+
|
|
107
|
+ if (oOBJECT && oOBJECT.parentNode) {
|
|
108
|
+ oOBJECT.parentNode.removeChild(oOBJECT)
|
|
109
|
+ }
|
|
110
|
+ }
|
|
111
|
+ } else {
|
|
112
|
+ let is64IE = isIE && !!(ua.match(/x64/i))
|
|
113
|
+ // =====如果页面有Lodop就直接使用,没有则新建:==========
|
|
114
|
+ if (oOBJECT || oEMBED) {
|
|
115
|
+ if (isIE) {
|
|
116
|
+ LODOP = oOBJECT
|
|
117
|
+ } else {
|
|
118
|
+ LODOP = oEMBED
|
|
119
|
+ }
|
|
120
|
+ } else if (!CreatedOKLodop7766) {
|
|
121
|
+ LODOP = document.createElement('object')
|
|
122
|
+ LODOP.setAttribute('width', 0)
|
|
123
|
+ LODOP.setAttribute('height', 0)
|
|
124
|
+ LODOP.setAttribute('style', 'position:absoluteleft:0pxtop:-100pxwidth:0pxheight:0px')
|
|
125
|
+ if (isIE) {
|
|
126
|
+ LODOP.setAttribute('classid', 'clsid:2105C259-1E0C-4534-8141-A753534CB4CA')
|
|
127
|
+ } else {
|
|
128
|
+ LODOP.setAttribute('type', 'application/x-print-lodop')
|
|
129
|
+ }
|
|
130
|
+ document.documentElement.appendChild(LODOP)
|
|
131
|
+ CreatedOKLodop7766 = LODOP
|
|
132
|
+ } else {
|
|
133
|
+ LODOP = CreatedOKLodop7766
|
|
134
|
+ }
|
|
135
|
+ // =====Lodop插件未安装时提示下载地址:==========
|
|
136
|
+ if ((!LODOP) || (!LODOP.VERSION)) {
|
|
137
|
+ if (ua.indexOf('Chrome') >= 0) {
|
|
138
|
+ document.body.innerHTML = strHtmChrome + document.body.innerHTML
|
|
139
|
+ }
|
|
140
|
+ if (ua.indexOf('Firefox') >= 0) {
|
|
141
|
+ document.body.innerHTML = strHtmFireFox + document.body.innerHTML
|
|
142
|
+ }
|
|
143
|
+ document.body.innerHTML = (is64IE ? strHtm64_Install : strHtmInstall) + document.body.innerHTML
|
|
144
|
+ return LODOP
|
|
145
|
+ }
|
|
146
|
+ }
|
|
147
|
+ if (LODOP.VERSION < '6.2.2.3') {
|
|
148
|
+ if (!needCLodop()) {
|
|
149
|
+ document.body.innerHTML = (is64IE ? strHtm64_Update : strHtmUpdate) + document.body.innerHTML
|
|
150
|
+ }
|
|
151
|
+ return LODOP
|
|
152
|
+ }
|
|
153
|
+ // ===如下空白位置适合调用统一功能(如注册语句、语言选择等):===
|
|
154
|
+
|
|
155
|
+ // =======================================================
|
|
156
|
+ return LODOP
|
|
157
|
+ } catch (err) {
|
|
158
|
+ alert('getLodop出错:' + err)
|
|
159
|
+ }
|
|
160
|
+}
|