pageoffice.js 34 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842
  1. /*! v5.3.0.1 | pageoffice.js for java | (c) 2016, 2021 Beijing zhuozheng zhiyuan software, Inc.*/
  2. function po_uuid(len, radix) {
  3. var chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('');
  4. var uuid = [],
  5. i;
  6. radix = radix || chars.length;
  7. if (len) {
  8. for (i = 0; i < len; i++) uuid[i] = chars[0 | Math.random() * radix]
  9. } else {
  10. var r;
  11. uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-';
  12. uuid[14] = '4';
  13. for (i = 0; i < 36; i++) {
  14. if (!uuid[i]) {
  15. r = 0 | Math.random() * 16;
  16. uuid[i] = chars[(i == 19) ? (r & 0x3) | 0x8 : r]
  17. }
  18. }
  19. }
  20. return uuid.join('')
  21. }
  22. function po_core_md5(x, len) {
  23. x[len >> 5] |= 0x80 << ((len) % 32);
  24. x[(((len + 64) >>> 9) << 4) + 14] = len;
  25. var a = 1732584193;
  26. var b = -271733879;
  27. var c = -1732584194;
  28. var d = 271733878;
  29. for (var i = 0; i < x.length; i += 16) {
  30. var olda = a;
  31. var oldb = b;
  32. var oldc = c;
  33. var oldd = d;
  34. a = po_md5_ff(a, b, c, d, x[i + 0], 7, -680876936);
  35. d = po_md5_ff(d, a, b, c, x[i + 1], 12, -389564586);
  36. c = po_md5_ff(c, d, a, b, x[i + 2], 17, 606105819);
  37. b = po_md5_ff(b, c, d, a, x[i + 3], 22, -1044525330);
  38. a = po_md5_ff(a, b, c, d, x[i + 4], 7, -176418897);
  39. d = po_md5_ff(d, a, b, c, x[i + 5], 12, 1200080426);
  40. c = po_md5_ff(c, d, a, b, x[i + 6], 17, -1473231341);
  41. b = po_md5_ff(b, c, d, a, x[i + 7], 22, -45705983);
  42. a = po_md5_ff(a, b, c, d, x[i + 8], 7, 1770035416);
  43. d = po_md5_ff(d, a, b, c, x[i + 9], 12, -1958414417);
  44. c = po_md5_ff(c, d, a, b, x[i + 10], 17, -42063);
  45. b = po_md5_ff(b, c, d, a, x[i + 11], 22, -1990404162);
  46. a = po_md5_ff(a, b, c, d, x[i + 12], 7, 1804603682);
  47. d = po_md5_ff(d, a, b, c, x[i + 13], 12, -40341101);
  48. c = po_md5_ff(c, d, a, b, x[i + 14], 17, -1502002290);
  49. b = po_md5_ff(b, c, d, a, x[i + 15], 22, 1236535329);
  50. a = po_md5_gg(a, b, c, d, x[i + 1], 5, -165796510);
  51. d = po_md5_gg(d, a, b, c, x[i + 6], 9, -1069501632);
  52. c = po_md5_gg(c, d, a, b, x[i + 11], 14, 643717713);
  53. b = po_md5_gg(b, c, d, a, x[i + 0], 20, -373897302);
  54. a = po_md5_gg(a, b, c, d, x[i + 5], 5, -701558691);
  55. d = po_md5_gg(d, a, b, c, x[i + 10], 9, 38016083);
  56. c = po_md5_gg(c, d, a, b, x[i + 15], 14, -660478335);
  57. b = po_md5_gg(b, c, d, a, x[i + 4], 20, -405537848);
  58. a = po_md5_gg(a, b, c, d, x[i + 9], 5, 568446438);
  59. d = po_md5_gg(d, a, b, c, x[i + 14], 9, -1019803690);
  60. c = po_md5_gg(c, d, a, b, x[i + 3], 14, -187363961);
  61. b = po_md5_gg(b, c, d, a, x[i + 8], 20, 1163531501);
  62. a = po_md5_gg(a, b, c, d, x[i + 13], 5, -1444681467);
  63. d = po_md5_gg(d, a, b, c, x[i + 2], 9, -51403784);
  64. c = po_md5_gg(c, d, a, b, x[i + 7], 14, 1735328473);
  65. b = po_md5_gg(b, c, d, a, x[i + 12], 20, -1926607734);
  66. a = po_md5_hh(a, b, c, d, x[i + 5], 4, -378558);
  67. d = po_md5_hh(d, a, b, c, x[i + 8], 11, -2022574463);
  68. c = po_md5_hh(c, d, a, b, x[i + 11], 16, 1839030562);
  69. b = po_md5_hh(b, c, d, a, x[i + 14], 23, -35309556);
  70. a = po_md5_hh(a, b, c, d, x[i + 1], 4, -1530992060);
  71. d = po_md5_hh(d, a, b, c, x[i + 4], 11, 1272893353);
  72. c = po_md5_hh(c, d, a, b, x[i + 7], 16, -155497632);
  73. b = po_md5_hh(b, c, d, a, x[i + 10], 23, -1094730640);
  74. a = po_md5_hh(a, b, c, d, x[i + 13], 4, 681279174);
  75. d = po_md5_hh(d, a, b, c, x[i + 0], 11, -358537222);
  76. c = po_md5_hh(c, d, a, b, x[i + 3], 16, -722521979);
  77. b = po_md5_hh(b, c, d, a, x[i + 6], 23, 76029189);
  78. a = po_md5_hh(a, b, c, d, x[i + 9], 4, -640364487);
  79. d = po_md5_hh(d, a, b, c, x[i + 12], 11, -421815835);
  80. c = po_md5_hh(c, d, a, b, x[i + 15], 16, 530742520);
  81. b = po_md5_hh(b, c, d, a, x[i + 2], 23, -995338651);
  82. a = po_md5_ii(a, b, c, d, x[i + 0], 6, -198630844);
  83. d = po_md5_ii(d, a, b, c, x[i + 7], 10, 1126891415);
  84. c = po_md5_ii(c, d, a, b, x[i + 14], 15, -1416354905);
  85. b = po_md5_ii(b, c, d, a, x[i + 5], 21, -57434055);
  86. a = po_md5_ii(a, b, c, d, x[i + 12], 6, 1700485571);
  87. d = po_md5_ii(d, a, b, c, x[i + 3], 10, -1894986606);
  88. c = po_md5_ii(c, d, a, b, x[i + 10], 15, -1051523);
  89. b = po_md5_ii(b, c, d, a, x[i + 1], 21, -2054922799);
  90. a = po_md5_ii(a, b, c, d, x[i + 8], 6, 1873313359);
  91. d = po_md5_ii(d, a, b, c, x[i + 15], 10, -30611744);
  92. c = po_md5_ii(c, d, a, b, x[i + 6], 15, -1560198380);
  93. b = po_md5_ii(b, c, d, a, x[i + 13], 21, 1309151649);
  94. a = po_md5_ii(a, b, c, d, x[i + 4], 6, -145523070);
  95. d = po_md5_ii(d, a, b, c, x[i + 11], 10, -1120210379);
  96. c = po_md5_ii(c, d, a, b, x[i + 2], 15, 718787259);
  97. b = po_md5_ii(b, c, d, a, x[i + 9], 21, -343485551);
  98. a = po_safe_add(a, olda);
  99. b = po_safe_add(b, oldb);
  100. c = po_safe_add(c, oldc);
  101. d = po_safe_add(d, oldd)
  102. }
  103. return Array(a, b, c, d)
  104. }
  105. function po_md5_cmn(q, a, b, x, s, t) {
  106. return po_safe_add(po_bit_rol(po_safe_add(po_safe_add(a, q), po_safe_add(x, t)), s), b)
  107. }
  108. function po_md5_ff(a, b, c, d, x, s, t) {
  109. return po_md5_cmn((b & c) | ((~b) & d), a, b, x, s, t)
  110. }
  111. function po_md5_gg(a, b, c, d, x, s, t) {
  112. return po_md5_cmn((b & d) | (c & (~d)), a, b, x, s, t)
  113. }
  114. function po_md5_hh(a, b, c, d, x, s, t) {
  115. return po_md5_cmn(b ^ c ^ d, a, b, x, s, t)
  116. }
  117. function po_md5_ii(a, b, c, d, x, s, t) {
  118. return po_md5_cmn(c ^ (b | (~d)), a, b, x, s, t)
  119. }
  120. function po_safe_add(x, y) {
  121. var lsw = (x & 0xFFFF) + (y & 0xFFFF);
  122. var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
  123. return (msw << 16) | (lsw & 0xFFFF)
  124. }
  125. function po_bit_rol(num, cnt) {
  126. return (num << cnt) | (num >>> (32 - cnt))
  127. }
  128. function po_str2binl(str) {
  129. var bin = Array();
  130. var mask = (1 << 8) - 1;
  131. for (var i = 0; i < str.length * 8; i += 8) bin[i >> 5] |= (str.charCodeAt(i / 8) & mask) << (i % 32);
  132. return bin
  133. }
  134. function po_binl2hex(binarray) {
  135. var hex_tab = "0123456789ABCDEF";
  136. var str = "";
  137. for (var i = 0; i < binarray.length * 4; i++) {
  138. str += hex_tab.charAt((binarray[i >> 2] >> ((i % 4) * 8 + 4)) & 0xF) + hex_tab.charAt((binarray[i >> 2] >> ((i % 4) * 8)) & 0xF)
  139. }
  140. return str
  141. }
  142. if (!window.JSON) {
  143. window.JSON = {
  144. parse: function(sJSON) {
  145. return eval('(' + sJSON + ')')
  146. },
  147. stringify: (function() {
  148. var toString = Object.prototype.toString;
  149. var isArray = Array.isArray || function(a) {
  150. return toString.call(a) === '[object Array]'
  151. };
  152. var escMap = {
  153. '"': '\\"',
  154. '\\': '\\\\',
  155. '\b': '\\b',
  156. '\f': '\\f',
  157. '\n': '\\n',
  158. '\r': '\\r',
  159. '\t': '\\t'
  160. };
  161. var escFunc = function(m) {
  162. return escMap[m] || '\\u' + (m.charCodeAt(0) + 0x10000).toString(16).substr(1)
  163. };
  164. var escRE = /[\\"\u0000-\u001F\u2028\u2029]/g;
  165. return function stringify(value) {
  166. if (value == null) {
  167. return 'null'
  168. } else if (typeof value === 'number') {
  169. return isFinite(value) ? value.toString() : 'null'
  170. } else if (typeof value === 'boolean') {
  171. return value.toString()
  172. } else if (typeof value === 'object') {
  173. if (typeof value.toJSON === 'function') {
  174. return stringify(value.toJSON())
  175. } else if (isArray(value)) {
  176. var res = '[';
  177. for (var i = 0; i < value.length; i++) res += (i ? ', ' : '') + stringify(value[i]);
  178. return res + ']'
  179. } else if (toString.call(value) === '[object Object]') {
  180. var tmp = [];
  181. for (var k in value) {
  182. if (value.hasOwnProperty(k)) tmp.push(stringify(k) + ': ' + stringify(value[k]))
  183. }
  184. return '{' + tmp.join(', ') + '}'
  185. }
  186. }
  187. return '"' + value.toString().replace(escRE, escFunc) + '"'
  188. }
  189. })()
  190. }
  191. }
  192. function po_hex_md5(s) {
  193. return po_binl2hex(po_core_md5(po_str2binl(s), s.length * 8))
  194. }
  195. var bPOIsInstalled = false;
  196. var POParent = po_hex_md5(window.location.pathname);
  197. var POModalToken = "";
  198. var PO_code = "\150\164\164\160\72\57\57\61\62\67\56\60\56\60\56\61\72\65\67\60\67\60\57";
  199. //var PO_code = "\x68\x74\x74\x70\x3a\x2f\x2f\x6c\x6f\x63\x61\x6c\x68\x6f\x73\x74\x3a\x35\x37\x30\x37\x30\x2f";
  200. var PO_code2 = "\150\164\164\160\163\72\57\57\61\62\67\56\60\56\60\56\61\72\65\67\60\67\61\57";
  201. var PO_datas;
  202. var poModalDlg;
  203. var polframe02;
  204. var isOpenWindowModelessClick = true;
  205. var POBrowser = {
  206. withCredentials: false,
  207. headerToken: "",
  208. isChromeAndGreaterThan42: function() {
  209. var e = "42";
  210. return this.getChromeVersion() >= e ? !0 : !1
  211. },
  212. getChromeVersion: function() {
  213. var e, t = navigator.userAgent.toLowerCase(),
  214. n = /chrome/,
  215. o = /safari\/\d{3}\.\d{2}$/,
  216. i = /chrome\/(\S+)/;
  217. return n.test(t) && o.test(t) && i.test(t) ? e = RegExp.$1 : 0
  218. },
  219. isChrome: function() {
  220. var e = navigator.userAgent.toLowerCase(),
  221. t = /chrome/;
  222. return t.test(e) ? !0 : !1
  223. },
  224. isEdge: function() {
  225. var e = navigator.userAgent.toLowerCase(),
  226. t = /edge/;
  227. return t.test(e) ? !0 : !1
  228. },
  229. isOldIE: function() {
  230. var e = navigator.userAgent.toLowerCase();
  231. return /msie/.test(e)
  232. },
  233. getBrowserVer: function() {
  234. var e = navigator.userAgent.toLowerCase();
  235. return (e.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/) || [])[1]
  236. },
  237. isXDR: function() {
  238. if (POBrowser.isOldIE() && ((parseInt(POBrowser.getBrowserVer(), 10) == 8) || (parseInt(POBrowser.getBrowserVer(), 10) == 9)) && window.XDomainRequest) return true;
  239. else return false
  240. },
  241. checkPOBrowserSate: function() {},
  242. strToHexCharCode: function(str) {
  243. if (str === "") return "";
  244. var hexCharCode = [];
  245. for (var i = 0; i < str.length; i++) {
  246. hexCharCode.push((str.charCodeAt(i)).toString(16))
  247. }
  248. return hexCharCode.join("").toUpperCase()
  249. },
  250. checkSSL: function() {
  251. var strhref = window.location.href;
  252. strhref = strhref.toLowerCase();
  253. if (strhref.substr(0, 8) == "https://") {
  254. PO_code = PO_code2
  255. }
  256. return true
  257. },
  258. getRootPath: function() {
  259. var pathName = "";
  260. var po_js_main = document.getElementById('po_js_main');
  261. if (po_js_main != null) {
  262. pathName = document.getElementById('po_js_main').src
  263. } else {
  264. var aScript = document.getElementsByTagName("script");
  265. for (var i = 0; i < aScript.length; i++) {
  266. if (aScript[i].src.indexOf("pageoffice.js") > -1) {
  267. pathName = aScript[i].src
  268. }
  269. }
  270. }
  271. var index = pathName.indexOf("/pageoffice.js");
  272. return pathName.substr(0, index)
  273. },
  274. getStringByName: function(Source, Name, Delimiter) {
  275. var iPos = 0;
  276. var strSrc, strName, strTemp;
  277. var strRet = "";
  278. strSrc = Delimiter + Source + Delimiter;
  279. strName = Delimiter + Name + "=";
  280. iPos = strSrc.indexOf(strName);
  281. if (iPos > -1)
  282. {
  283. strTemp = strSrc.substr(iPos + strName.length);
  284. iPos = strTemp.indexOf(Delimiter);
  285. if (iPos > -1)
  286. strRet = strTemp.substr(0, iPos);
  287. }
  288. return strRet;
  289. },
  290. getZSXmlHttp127: function() {
  291. var xhr = null;
  292. if (POBrowser.isXDR()) {
  293. xhr = new XDomainRequest()
  294. } else {
  295. if (window.XMLHttpRequest) {
  296. xhr = new XMLHttpRequest()
  297. } else {
  298. xhr = new ActiveXObject("Microsoft.XMLHTTP")
  299. }
  300. }
  301. return xhr
  302. },
  303. showInstallDlg: function() {
  304. if(navigator.userAgent.toLowerCase().indexOf("linux")>0){
  305. alert("您需要安装PageOffice来打开文档。请联系管理员获取正确的安装包,安装成功后重启电脑或注销登录再打开文档。");
  306. }
  307. else if (confirm("您需要安装PageOffice来打开文档。现在立即安装PageOffice吗?\r\n注意:安装完成后,请重新访问当前页面。")) {
  308. window.location.href = this.getRootPath() + "/posetup.exe"
  309. }
  310. },
  311. openWindow: function(strURL, strOptions, strArgument) {
  312. if (navigator.userAgent.toLowerCase().indexOf("linux") > 0) {
  313. var strWidth = POBrowser.getStringByName(strOptions.toLowerCase(), "width", ";");
  314. var strHeight = POBrowser.getStringByName(strOptions.toLowerCase(), "height", ";");
  315. var strPosition = "";
  316. if ((strWidth != "") && (strHeight != "")) {
  317. var iWidth = parseInt(strWidth);
  318. var iHeight = parseInt(strHeight);
  319. var iTop = (window.screen.availHeight - 30 - iHeight) / 2;
  320. var iLeft = (window.screen.availWidth - 10 - iWidth) / 2;
  321. strPosition = 'height=' + iHeight + ',innerHeight=' + iHeight + ',width=' + iWidth + ',innerWidth=' + iWidth + ',top=' + iTop + ',left=' + iLeft + ',';
  322. }
  323. window.open(strURL, 'POBrowser', strPosition + 'toolbar=no,menubar=no,scrollbars=no,resizable=no,location=no,status=no');
  324. return;
  325. }
  326. if ((strURL == null) || (strURL == "")) {
  327. alert("The parameter strURL of openWindow() cannot be null or empty.");
  328. return
  329. }
  330. if (strURL.charAt(0) != '/') {
  331. var strLower = strURL.toLowerCase();
  332. if ((strLower.substr(0, 7) == "http://") || (strLower.substr(0, 8) == "https://")) {} else {
  333. var pathName = window.location.href;
  334. if (pathName.indexOf("?") > 0) pathName = pathName.substr(0, pathName.indexOf("?"));
  335. var index = pathName.lastIndexOf("/");
  336. strURL = pathName.substr(0, index + 1) + strURL
  337. }
  338. } else {
  339. var pathName = window.location.href;
  340. var index = pathName.indexOf(window.location.pathname);
  341. strURL = pathName.substr(0, index) + strURL
  342. } if ((strOptions != null) && (strOptions[strOptions.length - 1] != ';')) strOptions = strOptions + ";";
  343. po_ajax2({
  344. url: "json.htm",
  345. success: function (data) {
  346. if (data.indexOf('"name":"jsonx"') > 0) {
  347. var strtemp = data.split(':');
  348. strtemp = strtemp[1].split(',');
  349. if (parseInt(strtemp[0]) < 5) {
  350. POBrowser.showInstallDlg();
  351. return
  352. }
  353. bPOIsInstalled = true;
  354. po_ajax({
  355. url: POBrowser.getRootPath() + "/poserver.zz",
  356. type: "POST",
  357. withCred: POBrowser.withCredentials,
  358. headerTok: POBrowser.headerToken,
  359. data: {
  360. Info: "PageOfficeLink",
  361. pageurl: strURL,
  362. options: strOptions + "IsModal=true;",
  363. params: strArgument
  364. },
  365. success: function (data) {
  366. PO_datas = data.split("\r\n");
  367. var strToken = po_hex_md5(POBrowser.strToHexCharCode(PO_datas[0] + POParent));
  368. POModalToken = strToken;
  369. if (poModalDlg != undefined) poModalDlg.showPobDlg();
  370. po_ajax2({
  371. url: "checkopened.htm",
  372. data: {
  373. token: strToken,
  374. open: encodeURIComponent(PO_datas[0] + POParent + "|" + strToken + "|"),
  375. parent: POParent,
  376. Info: PO_datas[1] + "headerToken=" + POBrowser.headerToken + ";"
  377. },
  378. success: function (data) {
  379. //if (data == "false") { }
  380. // setTimeout("POBrowser.callback2()", 300)
  381. }
  382. })
  383. }
  384. })
  385. }
  386. },
  387. error: function (e) {
  388. POBrowser.showInstallDlg();
  389. }
  390. })
  391. },
  392. openWindowModeless: function(strURL, strOptions, strArgument) {
  393. if(navigator.userAgent.toLowerCase().indexOf("linux")>0){
  394. var strWidth = POBrowser.getStringByName(strOptions.toLowerCase(),"width",";");
  395. var strHeight = POBrowser.getStringByName(strOptions.toLowerCase(),"height",";");
  396. var strPosition = "";
  397. if((strWidth!="")&&(strHeight!="")){
  398. var iWidth = parseInt(strWidth);
  399. var iHeight = parseInt(strHeight);
  400. var iTop = (window.screen.availHeight - 30 - iHeight) / 2;
  401. var iLeft = (window.screen.availWidth - 10 - iWidth) / 2;
  402. strPosition = 'height=' + iHeight + ',innerHeight=' + iHeight + ',width=' + iWidth + ',innerWidth=' + iWidth + ',top=' + iTop + ',left=' + iLeft + ',';
  403. }
  404. window.open(strURL, 'POBrowser', strPosition+'toolbar=no,menubar=no,scrollbars=no,resizable=no,location=no,status=no');
  405. return;
  406. }
  407. if (isOpenWindowModelessClick) isOpenWindowModelessClick = false;
  408. else return;
  409. setTimeout(function() {
  410. isOpenWindowModelessClick = true
  411. }, 1000);
  412. if ((strURL == null) || (strURL == "")) {
  413. alert("The parameter strURL of openWindowModeless() cannot be null or empty.");
  414. return
  415. }
  416. if (strURL.charAt(0) != '/') {
  417. var strLower = strURL.toLowerCase();
  418. if ((strLower.substr(0, 7) == "http://") || (strLower.substr(0, 8) == "https://")) {} else {
  419. var pathName = window.location.href;
  420. if (pathName.indexOf("?") > 0) pathName = pathName.substr(0, pathName.indexOf("?"));
  421. var index = pathName.lastIndexOf("/");
  422. strURL = pathName.substr(0, index + 1) + strURL
  423. }
  424. } else {
  425. var pathName = window.location.href;
  426. var index = pathName.indexOf(window.location.pathname);
  427. strURL = pathName.substr(0, index) + strURL
  428. } if ((strOptions != null) && (strOptions[strOptions.length - 1] != ';')) strOptions = strOptions + ";";
  429. po_ajax2({
  430. url: "json.htm",
  431. success: function (data) {
  432. if (data.indexOf('"name":"jsonx"') > 0) {
  433. var strtemp = data.split(':');
  434. strtemp = strtemp[1].split(',');
  435. if (parseInt(strtemp[0]) < 5) {
  436. POBrowser.showInstallDlg();
  437. return
  438. }
  439. bPOIsInstalled = true;
  440. po_ajax({
  441. url: POBrowser.getRootPath() + "/poserver.zz",
  442. type: "POST",
  443. withCred: POBrowser.withCredentials,
  444. headerTok: POBrowser.headerToken,
  445. data: {
  446. Info: "PageOfficeLink",
  447. pageurl: strURL,
  448. options: strOptions + "IsModal=false;",
  449. params: strArgument
  450. },
  451. success: function (data) {
  452. PO_datas = data.split("\r\n");
  453. var strToken = po_hex_md5(POBrowser.strToHexCharCode(PO_datas[0] + POParent));
  454. po_ajax2({
  455. url: "checkopened.htm",
  456. data: {
  457. token: strToken,
  458. open: encodeURIComponent(PO_datas[0] + POParent + "|" + strToken + "|"),
  459. parent: POParent,
  460. Info: PO_datas[1] + "headerToken=" + POBrowser.headerToken + ";"
  461. },
  462. success: function (data) {
  463. //if (data == "false") { }
  464. // setTimeout("POBrowser.callback2()", 300)
  465. }
  466. })
  467. }
  468. })
  469. }
  470. },
  471. error: function (e) {
  472. POBrowser.showInstallDlg();
  473. }
  474. })
  475. return
  476. },
  477. openPDFWindow: function(strURL, strOptions, strArgument) {
  478. if ((strURL == null) || (strURL == "")) {
  479. alert("The parameter strURL of openPDFWindow() cannot be null or empty.");
  480. return
  481. }
  482. if (strURL.charAt(0) != '/') {
  483. var strLower = strURL.toLowerCase();
  484. if ((strLower.substr(0, 7) == "http://") || (strLower.substr(0, 8) == "https://")) {} else {
  485. var pathName = window.location.href;
  486. if (pathName.indexOf("?") > 0) pathName = pathName.substr(0, pathName.indexOf("?"));
  487. var index = pathName.lastIndexOf("/");
  488. strURL = pathName.substr(0, index + 1) + strURL
  489. }
  490. } else {
  491. var pathName = window.location.href;
  492. var index = pathName.indexOf(window.location.pathname);
  493. strURL = pathName.substr(0, index) + strURL
  494. }
  495. if ((strOptions != null) && (strOptions[strOptions.length - 1] != ';')) strOptions = strOptions + ";";
  496. po_ajax2({
  497. url: "json.htm",
  498. success: function (data) {
  499. if (data.indexOf('"name":"jsonx"') > 0) {
  500. var strtemp = data.split(':');
  501. strtemp = strtemp[1].split(',');
  502. if (parseInt(strtemp[0]) < 5) {
  503. POBrowser.showInstallDlg();
  504. return
  505. }
  506. bPOIsInstalled = true;
  507. po_ajax({
  508. url: POBrowser.getRootPath() + "/poserver.zz",
  509. type: "POST",
  510. withCred: POBrowser.withCredentials,
  511. headerTok: POBrowser.headerToken,
  512. data: {
  513. Info: "PageOfficeLink",
  514. pageurl: strURL,
  515. options: strOptions + "IsModal=false;",
  516. params: strArgument
  517. },
  518. success: function (data) {
  519. PO_datas = data.split("\r\n");
  520. var strToken = po_hex_md5(POBrowser.strToHexCharCode(PO_datas[0] + POParent));
  521. po_ajax2({
  522. url: "checkopened.htm",
  523. data: {
  524. token: strToken,
  525. open: encodeURIComponent(PO_datas[0] + POParent + "|" + strToken + "|"),
  526. parent: POParent,
  527. Info: PO_datas[1] + "headerToken=" + POBrowser.headerToken + ";"
  528. },
  529. success: function (data) {
  530. if (navigator.userAgent.toLowerCase().indexOf("linux") > 0) {
  531. if (zsxmlhttp2.responseText == "error=procfailed") {
  532. //alert("安装完pageoffice客户端后您需要重启电脑,才能正常打开此链接。");
  533. }
  534. }
  535. //else
  536. // setTimeout("POBrowser.callback2()", 300)
  537. }
  538. })
  539. }
  540. })
  541. }
  542. },
  543. error: function (e) {
  544. POBrowser.showInstallDlg();
  545. }
  546. })
  547. return
  548. },
  549. sendUserdata: function() {
  550. var zsxmlhttp2 = POBrowser.getZSXmlHttp127();
  551. zsxmlhttp2.onload = function() {};
  552. zsxmlhttp2.open("POST", PO_code + "userdata.htm?x=" + po_uuid(8, 16));
  553. zsxmlhttp2.send("parent=" + POParent + "&Info=" + PO_datas[1])
  554. },
  555. getArgument: function() {
  556. try {
  557. return window.external.UserParams
  558. } catch (e) {
  559. alert(e.message + ' Please ensure that you call it in POBrowser.')
  560. }
  561. },
  562. closeWindow: function() {
  563. try {
  564. return window.external.Close()
  565. } catch (e) {
  566. alert(e.message + ' Please ensure that you call it in POBrowser.')
  567. }
  568. },
  569. callback2: function() {
  570. var strRet = "error=unexpected.";
  571. var zsxmlhttp = POBrowser.getZSXmlHttp127();
  572. zsxmlhttp.onload = function() {
  573. strRet = zsxmlhttp.responseText;
  574. if ((strRet != "null") && (strRet != "abort")) {
  575. var parsedData = JSON.parse(strRet);
  576. if (parsedData[0].name == 'jQuery().hidePobDlg()') {
  577. if (poModalDlg == undefined) {
  578. setTimeout("POBrowser.callback2()", 300);
  579. return
  580. }
  581. parsedData[0].name = 'poModalDlg.hidePobDlg()'
  582. }
  583. var zsxmlhttp2 = POBrowser.getZSXmlHttp127();
  584. zsxmlhttp2.onload = function() {
  585. var vRet;
  586. try {
  587. vRet = eval(parsedData[0].name)
  588. } catch (e) {
  589. alert(e.message)
  590. }
  591. if (typeof(vRet) != "string") {
  592. vRet = "undefined"
  593. }
  594. var zsxmlhttp3 = POBrowser.getZSXmlHttp127();
  595. zsxmlhttp3.onload = function() {};
  596. zsxmlhttp3.open("POST", PO_code + "funcret.htm?x=" + po_uuid(8, 16));
  597. zsxmlhttp3.send("id=" + parsedData[0].id + "&ret=" + vRet)
  598. };
  599. zsxmlhttp2.open("POST", PO_code + "funcret0.htm?x=" + po_uuid(8, 16));
  600. zsxmlhttp2.send("id=" + parsedData[0].id)
  601. }
  602. if (strRet != "abort") setTimeout("POBrowser.callback2()", 300)
  603. };
  604. zsxmlhttp.ontimeout = function(e) {
  605. setTimeout("POBrowser.callback2()", 300)
  606. };
  607. zsxmlhttp.open("POST", PO_code + "func2.htm?x=" + po_uuid(8, 16));
  608. zsxmlhttp.send("parent=" + POParent)
  609. },
  610. addCssByLink: function(url) {
  611. var doc = document;
  612. var link = doc.createElement("link");
  613. link.setAttribute("rel", "stylesheet");
  614. link.setAttribute("type", "text/css");
  615. link.setAttribute("href", url);
  616. var heads = doc.getElementsByTagName("head");
  617. if (heads.length) heads[0].appendChild(link);
  618. else doc.documentElement.appendChild(link)
  619. },
  620. includeJS: function(path) {
  621. var a = document.createElement("script");
  622. a.type = "text/javascript";
  623. a.src = path;
  624. var head = document.getElementsByTagName("head")[0];
  625. head.appendChild(a)
  626. },
  627. resumePO: function() {
  628. po_ajax2({
  629. url: "resume.htm",
  630. data: {
  631. parent: POModalToken
  632. },
  633. success: function (data) {
  634. }
  635. })
  636. }
  637. };
  638. function obj2str(data) {
  639. data = data || {};
  640. var res = [];
  641. for (var key in data) {
  642. res.push(encodeURIComponent(key) + "=" + encodeURIComponent(data[key]))
  643. }
  644. return res.join("&")
  645. }
  646. function obj2str2(data) {
  647. data = data || {};
  648. var res = [];
  649. for (var key in data) {
  650. res.push(key + "=" + data[key])
  651. }
  652. return res.join("&")
  653. }
  654. function po_ajax(option) {
  655. var params = obj2str(option.data);
  656. var xmlhttp;
  657. if (window.XMLHttpRequest) {
  658. xmlhttp = new XMLHttpRequest()
  659. } else {
  660. xmlhttp = new ActiveXObject("Microsoft.XMLHTTP")
  661. } if (option.type.toUpperCase() === "GET") {
  662. xmlhttp.open("GET", option.url + "?" + params);
  663. xmlhttp.withCredentials = option.withCred;
  664. xmlhttp.send()
  665. } else {
  666. xmlhttp.open("POST", option.url);
  667. xmlhttp.withCredentials = option.withCred;
  668. xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  669. var iPos = option.headerTok.indexOf(":");
  670. if(iPos>0)
  671. xmlhttp.setRequestHeader(option.headerTok.substr(0, iPos), option.headerTok.substr(iPos+1));
  672. xmlhttp.send(params)
  673. }
  674. xmlhttp.onreadystatechange = function() {
  675. if (xmlhttp.readyState === 4) {
  676. if (xmlhttp.status >= 200 && xmlhttp.status < 300 || xmlhttp.status === 304) {
  677. option.success(xmlhttp.responseText, "success")
  678. } else {}
  679. }
  680. }
  681. }
  682. function po_ajax3(params) {
  683. params = params || {};
  684. params.data = params.data || {};
  685. var json = jsonp(params);
  686. function jsonp(params) {
  687. var callbackName = 'callback';
  688. var head = document.getElementsByTagName('head')[0];
  689. params.data['callback'] = callbackName;
  690. var data = formatParams(params.data);
  691. var script = document.createElement('script');
  692. head.appendChild(script);
  693. window[callbackName] = function(json) {
  694. head.removeChild(script);
  695. clearTimeout(script.timer);
  696. window[callbackName] = null;
  697. params.success && params.success(json);
  698. };
  699. script.src = params.url + '?' + data;
  700. script.timer = setTimeout(function() {
  701. window[callbackName] = null;
  702. head.removeChild(script);
  703. params.error && params.error({
  704. message: 'timeout'
  705. });
  706. }, 1000);
  707. };
  708. function formatParams(data) {
  709. var arr = [];
  710. for(var name in data) {
  711. arr.push(encodeURIComponent(name) + '=' + encodeURIComponent(data[name]));
  712. };
  713. // 添加一个随机数,防止缓存
  714. arr.push('v=' + random());
  715. return arr.join('&');
  716. }
  717. function random() {
  718. return Math.floor(Math.random() * 10000 + 500);
  719. }
  720. }
  721. POBrowser.addCssByLink(POBrowser.getRootPath() + "/pobstyle.css");
  722. POBrowser.checkSSL();
  723. var poEvent = {};
  724. poEvent.addEvents = function(eventType, handle) {
  725. if (window.attachEvent) {
  726. poEvent.addEvents = function(eventType, handle) {
  727. window.attachEvent('on' + eventType, function() {
  728. handle.call(window, arguments)
  729. })
  730. }
  731. } else {
  732. poEvent.addEvents = function(eventType, handle) {
  733. window.addEventListener(eventType, handle, false)
  734. }
  735. }
  736. poEvent.addEvents("load", handle)
  737. };
  738. function po_initialize() {
  739. if(document.body!=null){
  740. polframe02 = document.createElement('iframe');
  741. polframe02.src = PO_code+"parent.htm";
  742. polframe02.style.display = 'none';
  743. polframe02.id = "poiframe1";
  744. polframe02.name = "poiframe1";
  745. document.body.appendChild(polframe02);
  746. window.poModalDlg = {
  747. dialogPob: null,
  748. init: function() {
  749. this.dialogPob = document.createElement('div');
  750. this.dialogPob.className = "pobmodal-overlay";
  751. this.dialogPob.style.display = "none";
  752. this.dialogPob.innerHTML = "<div id=\"pobmodal-dialog\"><h2>提示</h2>当前文档正处于打开状态,请点击<a style='color:#ff0000;' href=\"javascript:POBrowser.resumePO();\" > 这里 </a>切换PageOffice窗口继续查看或编辑文档。<div class=\"button-holder\"></br></br><a class=\"button blue\" href=\"javascript:POBrowser.resumePO();\" > 立即切换 PageOffice 窗口</a></div></div>";
  753. document.getElementsByTagName("body")[0].appendChild(this.dialogPob)
  754. },
  755. showPobDlg: function() {
  756. this.dialogPob.style.display = "block"
  757. },
  758. hidePobDlg: function() {
  759. this.dialogPob.style.display = "none"
  760. }
  761. }
  762. poModalDlg.init()
  763. }
  764. }
  765. po_initialize();
  766. poEvent.addEvents("load", function() {
  767. if (polframe02 == undefined){
  768. po_initialize();
  769. }
  770. });
  771. window._postMessage = function (_method, _params, _callback) {
  772. let messageBody = {
  773. method: _method,
  774. params: _params,
  775. }
  776. if (_callback != undefined) {
  777. let proxyMethod = "proxy" + parseInt(Math.random() * 1000);
  778. messageBody.returnMethod = proxyMethod;
  779. window[proxyMethod] = function (_p) {
  780. try {
  781. _callback(_p);
  782. } finally {
  783. delete window[proxyMethod];
  784. }
  785. }
  786. }
  787. polframe02.contentWindow.postMessage(messageBody, '*');
  788. }
  789. window.addEventListener("message", function (event) {
  790. let data = event.data;
  791. if (null == data || data.method == undefined) {
  792. return;
  793. }
  794. if (data.returnMethod != undefined) {
  795. var vRet;
  796. try {
  797. vRet = eval(data.method)
  798. } catch (e) {
  799. alert(e.message)
  800. }
  801. if (typeof(vRet) != "string") {
  802. vRet = "undefined"
  803. }
  804. window._postMessage(data.returnMethod, vRet);
  805. } else {
  806. // console.log(data.method);
  807. try {
  808. return window[data.method](data.params);
  809. } catch (e) {
  810. console.warn(e);
  811. }
  812. }
  813. });
  814. function po_ajax2(option) {
  815. var params = obj2str2(option.data);
  816. window._postMessage(option.url, params, function (data) {
  817. clearTimeout(po_timer1);
  818. option.success(data);
  819. });
  820. po_timer1 = setTimeout(function() {
  821. option.error && option.error({
  822. message: 'timeout'
  823. });
  824. }, 1000);
  825. }