tangerocx.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480
  1. //通用的js语句和函数
  2. var TANGER_OCX_bDocOpen = false;
  3. var TANGER_OCX_strOp; //标识当前操作。1:新建;2:打开编辑;3:打开阅读
  4. var TANGER_OCX_attachName; //标识已经存在的在线编辑文档附件的名称
  5. var TANGER_OCX_attachURL; //在线编辑文档附件的URL
  6. var TANGER_OCX_actionURL; //表单提交到的URL
  7. var TANGER_OCX_OBJ; //控件对象
  8. var TANGER_OCX_key=""; //加密签章
  9. //此函数在网页装载时被调用。用来获取控件对象并保存到TANGER_OCX_OBJ
  10. //同时,可以设置初始的菜单状况,打开初始文档等等。
  11. function TANGER_OCX_Init(initdocurl)
  12. {
  13. TANGER_OCX_OBJ = document.all.item("TANGER_OCX");
  14. var useUTF8 = (document.charset == "utf-8");
  15. TANGER_OCX_OBJ.IsUseUTF8Data = useUTF8;
  16. TANGER_OCX_OBJ.FileNew = false;
  17. TANGER_OCX_OBJ.FileClose = false;
  18. try
  19. {
  20. //保存该表单的提交url,将来传递给控件的SaveToURL函数
  21. TANGER_OCX_actionURL = document.forms[0].action;
  22. //获取当前操作代码
  23. TANGER_OCX_strOp = document.all.item("TANGER_OCX_op").innerHTML;
  24. //获取已经存在的附件名称
  25. TANGER_OCX_attachName = document.all.item("TANGER_OCX_attachName").innerHTML;
  26. //获取已经存在的附件URL
  27. TANGER_OCX_attachURL = document.all.item("TANGER_OCX_attachURL").innerHTML;
  28. try{
  29. TANGER_OCX_key = document.all.item("TANGER_OCX_key").innerHTML;
  30. }catch(err){}finally{};
  31. TANGER_OCX_OBJ.SetAutoCheckSignKey(TANGER_OCX_key);
  32. switch(TANGER_OCX_strOp)
  33. {
  34. case "1":
  35. if(initdocurl!="")
  36. {
  37. TANGER_OCX_OBJ.BeginOpenFromURL(initdocurl,false,false);//参数:URL,是否显示进程,是否只读
  38. }
  39. break;
  40. case "2":
  41. if(TANGER_OCX_attachURL)
  42. {
  43. TANGER_OCX_OBJ.BeginOpenFromURL(TANGER_OCX_attachURL,true,false);
  44. }
  45. else
  46. {
  47. if(initdocurl!="")
  48. TANGER_OCX_OBJ.BeginOpenFromURL(initdocurl,true,false);
  49. }
  50. break;
  51. case "3":
  52. if(TANGER_OCX_attachURL)
  53. {
  54. TANGER_OCX_OBJ.BeginOpenFromURL(TANGER_OCX_attachURL,true,true);
  55. }
  56. break;
  57. default: //去要打开指定的模板文件,此时,TANGER_OCX_strOp指定的是url
  58. //以下使用当前文档的URL来获得模板的URL,也就是跟在?openform后面的部分
  59. var keystr = "?openform&".toUpperCase();
  60. var parastring = window.location.search;
  61. //alert(parastring);
  62. var urlbegin = parastring.toUpperCase().indexOf(keystr);
  63. if(-1 != urlbegin)
  64. {
  65. TANGER_OCX_strOp = parastring.substr(urlbegin+keystr.length);
  66. //alert(TANGER_OCX_strOp);
  67. //判断是否是WPS模板
  68. var wpsKey = "vwWpsTurl".toUpperCase();
  69. var isWpsTemplateURL = (-1 != parastring.toUpperCase().indexOf(wpsKey));
  70. if(!isWpsTemplateURL)
  71. {
  72. TANGER_OCX_OBJ.BeginOpenFromURL(TANGER_OCX_strOp,true,false);
  73. }
  74. else
  75. {
  76. TANGER_OCX_OBJ.BeginOpenFromURL(TANGER_OCX_strOp,true,false,"WPS.Document");
  77. }
  78. }
  79. break;
  80. }
  81. }
  82. catch(err){
  83. alert("错误:" + err.number + ":" + err.description);
  84. }
  85. finally{
  86. }
  87. }
  88. //增加演示自定义菜单项目
  89. function addMyMenuItems()
  90. {
  91. try{
  92. TANGER_OCX_OBJ = document.all.item("TANGER_OCX");
  93. //增加自定义文件菜单项目
  94. TANGER_OCX_OBJ.AddFileMenuItem('保存到服务器-用户自定义菜单',false,true,1);
  95. TANGER_OCX_OBJ.AddFileMenuItem('');
  96. //增加自定义主菜单项目
  97. TANGER_OCX_OBJ.AddCustomMenuItem('我的菜单1:切换禁止拷贝',false,false,1);
  98. TANGER_OCX_OBJ.AddCustomMenuItem('');
  99. TANGER_OCX_OBJ.AddCustomMenuItem('我的菜单2',false,false,2);
  100. TANGER_OCX_OBJ.AddCustomMenuItem('');
  101. TANGER_OCX_OBJ.AddCustomMenuItem('我的菜单3',false,false,3);
  102. TANGER_OCX_OBJ.AddCustomMenuItem('');
  103. TANGER_OCX_OBJ.AddCustomMenuItem('此菜单需要打开的文档才能使用',false,true,4);
  104. }
  105. catch(err)
  106. {
  107. }
  108. }
  109. function ShowTitleBar(bShow)
  110. {
  111. TANGER_OCX_OBJ.Titlebar = bShow;
  112. }
  113. function ShowMenubar(bShow)
  114. {
  115. TANGER_OCX_OBJ.Menubar = bShow;
  116. }
  117. function ShowToolMenu(bShow)
  118. {
  119. TANGER_OCX_OBJ.IsShowToolMenu = bShow;
  120. }
  121. //从本地增加图片到文档指定位置
  122. function AddPictureFromLocal()
  123. {
  124. if(TANGER_OCX_bDocOpen)
  125. {
  126. TANGER_OCX_OBJ.SetReadOnly(false);
  127. TANGER_OCX_OBJ.AddPicFromLocal(
  128. "", //路径
  129. true,//是否提示选择文件
  130. true,//是否浮动图片
  131. 0,//如果是浮动图片,相对于左边的Left 单位磅
  132. 0, //如果是浮动图片,相对于当前段落Top
  133. 1 //光标位置
  134. );
  135. };
  136. }
  137. //从URL增加图片到文档指定位置
  138. function AddPictureFromURL(URL)
  139. {
  140. if(TANGER_OCX_bDocOpen)
  141. {
  142. TANGER_OCX_OBJ.SetReadOnly(false);
  143. TANGER_OCX_OBJ.AddPicFromURL(
  144. URL,//URL 注意;URL必须返回Word支持的图片类型。
  145. true,//是否浮动图片
  146. 0,//如果是浮动图片,相对于左边的Left 单位磅
  147. 0,//如果是浮动图片,相对于当前段落Top
  148. 1 //光标位置
  149. );
  150. };
  151. }
  152. //从本地增加印章文档指定位置
  153. function AddSignFromLocal()
  154. {
  155. // alert(TANGER_OCX_key);
  156. if(TANGER_OCX_bDocOpen)
  157. {
  158. TANGER_OCX_OBJ.SetReadOnly(false);
  159. TANGER_OCX_OBJ.AddSignFromLocal
  160. (
  161. TANGER_OCX_Username,//当前登陆用户
  162. "",//缺省文件
  163. true,//提示选择
  164. 0,//left
  165. 0,
  166. TANGER_OCX_key,
  167. 1,
  168. 100,
  169. 0
  170. ) ;
  171. }
  172. }
  173. //从URL增加印章文档指定位置
  174. function AddSignFromURL(URL)
  175. {
  176. // alert(TANGER_OCX_key);
  177. if(TANGER_OCX_bDocOpen)
  178. {
  179. TANGER_OCX_OBJ.SetReadOnly(false);
  180. TANGER_OCX_OBJ.AddSignFromURL
  181. (
  182. TANGER_OCX_Username,//当前登陆用户
  183. URL,//URL
  184. 0,//left
  185. 0,
  186. TANGER_OCX_key,
  187. 1,
  188. 100,
  189. 0
  190. ); //top
  191. }
  192. }
  193. //开始手写签名
  194. function DoHandSign()
  195. {
  196. // alert(TANGER_OCX_key);
  197. if(TANGER_OCX_bDocOpen)
  198. {
  199. TANGER_OCX_OBJ.SetReadOnly(false);
  200. TANGER_OCX_OBJ.DoHandSign2(TANGER_OCX_Username,TANGER_OCX_key);
  201. }
  202. }
  203. //开始手工绘图,可用于手工批示
  204. function DoHandDraw()
  205. {
  206. if(TANGER_OCX_bDocOpen)
  207. {
  208. TANGER_OCX_OBJ.SetReadOnly(false);
  209. TANGER_OCX_OBJ.DoHandDraw2();
  210. }
  211. }
  212. //检查签名结果
  213. function DoCheckSign()
  214. {
  215. // alert(TANGER_OCX_key);
  216. if(TANGER_OCX_bDocOpen)
  217. {
  218. var ret = TANGER_OCX_OBJ.DoCheckSign
  219. (
  220. false,/*可选参数 IsSilent 缺省为FAlSE,表示弹出验证对话框,否则,只是返回验证结果到返回值*/
  221. TANGER_OCX_key
  222. );//返回值,验证结果字符串
  223. //alert(ret);
  224. }
  225. }
  226. //从服务器加盖安全印章
  227. function addServerSecSign()
  228. {
  229. var signUrl=document.all("secSignFileUrl").options[document.all("secSignFileUrl").selectedIndex].value;
  230. if(TANGER_OCX_OBJ.doctype==1||TANGER_OCX_OBJ.doctype==2)
  231. {
  232. try
  233. {TANGER_OCX_OBJ.AddSecSignFromURL(TANGER_OCX_Username,signUrl);}
  234. catch(error){}
  235. }
  236. else
  237. {alert("不能在该类型文档中使用安全签名印章.");}
  238. }
  239. //从服务器加盖安全印章
  240. function addServerSecSign_db(username,signUrl)
  241. {
  242. //var signUrl=document.all("secSignFileUrl").options[document.all("secSignFileUrl").selectedIndex].value;
  243. if(TANGER_OCX_OBJ.doctype==1||TANGER_OCX_OBJ.doctype==2)
  244. {
  245. try
  246. {TANGER_OCX_OBJ.AddSecSignFromURL(username,signUrl);}
  247. catch(error){}
  248. }
  249. else
  250. {alert("不能在该类型文档中使用安全签名印章.");}
  251. }
  252. //从本机加盖安全印章
  253. function addLocalSecSign()
  254. {
  255. if(TANGER_OCX_OBJ.doctype==1||TANGER_OCX_OBJ.doctype==2)
  256. {
  257. try
  258. {TANGER_OCX_OBJ.AddSecSignFromLocal(TANGER_OCX_Username,"");}
  259. catch(error){}
  260. }
  261. else
  262. {alert("不能在该类型文档中使用安全签名印章.");}
  263. }
  264. //从EKEY加盖安全印章
  265. function addEkeySecSign()
  266. {
  267. if(TANGER_OCX_OBJ.doctype==1||TANGER_OCX_OBJ.doctype==2)
  268. {
  269. try
  270. {TANGER_OCX_OBJ.AddSecSignFromEkey(TANGER_OCX_Username);}
  271. catch(error){}
  272. }
  273. else
  274. {alert("不能在该类型文档中使用安全签名印章.");}
  275. }
  276. //增加手写安全签名
  277. function addHandSecSign()
  278. {
  279. if(TANGER_OCX_OBJ.doctype==1||TANGER_OCX_OBJ.doctype==2)
  280. {
  281. try
  282. {TANGER_OCX_OBJ.AddSecHandSign(TANGER_OCX_Username);}
  283. catch(error){}
  284. }
  285. else
  286. {alert("不能在该类型文档中使用安全签名印章.");}
  287. }
  288. //如果原先的表单定义了OnSubmit事件,保存文档时首先会调用原先的事件。
  289. function TANGER_OCX_doFormOnSubmit()
  290. {
  291. var form = document.forms[0];
  292. if (form.onsubmit)
  293. {
  294. var retVal = form.onsubmit();
  295. if (typeof retVal == "boolean" && retVal == false)
  296. return false;
  297. }
  298. return true;
  299. }
  300. //允许或禁止用户从控件拷贝数据
  301. function TANGER_OCX_SetNoCopy(boolvalue)
  302. {
  303. TANGER_OCX_OBJ.IsNoCopy = boolvalue;
  304. }
  305. //设置用户名
  306. function TANGER_OCX_SetDocUser(cuser)
  307. {
  308. TANGER_OCX_Username = cuser;
  309. with(TANGER_OCX_OBJ.ActiveDocument.Application)
  310. {
  311. UserName = cuser;
  312. }
  313. }
  314. //设置页面布局
  315. function TANGER_OCX_ChgLayout()
  316. {
  317. try
  318. {
  319. TANGER_OCX_OBJ.showdialog(5); //设置页面布局
  320. }
  321. catch(err){
  322. alert("错误:" + err.number + ":" + err.description);
  323. }
  324. finally{
  325. }
  326. }
  327. //打印文档
  328. function TANGER_OCX_PrintDoc(isBackground)
  329. {
  330. var oldOption;
  331. try
  332. {
  333. var objOptions = TANGER_OCX_OBJ.ActiveDocument.Application.Options;
  334. oldOption = objOptions.PrintBackground;
  335. objOptions.PrintBackground = isBackground;
  336. }
  337. catch(err){};
  338. TANGER_OCX_OBJ.printout(true);
  339. try
  340. {
  341. var objOptions = TANGER_OCX_OBJ.ActiveDocument.Application.Options;
  342. objOptions.PrintBackground = oldOption;
  343. }
  344. catch(err){};
  345. }
  346. //此函数在文档关闭时被调用。
  347. function TANGER_OCX_OnDocumentClosed()
  348. {
  349. TANGER_OCX_bDocOpen = false;
  350. }
  351. //此函数用来保存当前文档。主要使用了控件的SaveToURL函数。
  352. //有关此函数的详细用法,请参阅编程手册。
  353. function TANGER_OCX_SaveDoc(fileName)
  354. {
  355. var retStr=new String;
  356. var newwin,newdoc;
  357. if(fileName=="")
  358. {
  359. alert("请指定附件名称!");
  360. return;
  361. }
  362. try
  363. {
  364. if(!TANGER_OCX_doFormOnSubmit())return;
  365. if(!TANGER_OCX_bDocOpen)
  366. {
  367. alert("没有打开的文档。");
  368. return;
  369. }
  370. //在编辑状态下需要删除的附件名称
  371. var deleteFile = "";
  372. //设置要保存的附件文件名
  373. document.all.item("TANGER_OCX_filename").value = fileName;
  374. switch(TANGER_OCX_strOp)
  375. {
  376. case "3":
  377. alert("文档处于阅读状态,您不能保存到服务器。");
  378. break;
  379. case "2": //需要首先删除以前的文档附件
  380. deleteFile = (TANGER_OCX_attachName=="")?"":"%%Detach="+escape(TANGER_OCX_attachName);
  381. case "1":
  382. //新建文档
  383. default:
  384. retStr = TANGER_OCX_OBJ.SaveToURL(TANGER_OCX_actionURL,
  385. document.all.item("NTKO_UPLOADFIELD").name, //子表单的文件上载控件的名称
  386. deleteFile,
  387. fileName,
  388. 0 //同时提交forms[0]的信息
  389. );
  390. newwin = window.open("","_blank","left=200,top=200,width=400,height=200,status=0,toolbar=0,menubar=0,location=0,scrollbars=0,resizable=0",false);
  391. newdoc = newwin.document;
  392. newdoc.open();
  393. newdoc.write("<center><hr>"+retStr+"<hr><input type=button VALUE='关闭窗口' onclick='window.close()'></center>");
  394. newdoc.close();
  395. //window.alert(retStr);
  396. window.opener.location.reload();
  397. window.close();
  398. break;
  399. }
  400. }
  401. catch(err){
  402. alert("不能保存到URL:" + err.number + ":" + err.description);
  403. }
  404. finally{
  405. }
  406. }
  407. //此函数在文档打开时被调用。
  408. function TANGER_OCX_OnDocumentOpened(str, obj)
  409. {
  410. try
  411. {
  412. TANGER_OCX_bDocOpen = true;
  413. //设置用户名
  414. TANGER_OCX_SetDocUser(TANGER_OCX_Username);
  415. if(obj)
  416. {
  417. switch(TANGER_OCX_strOp)
  418. {
  419. case "1":
  420. case "2":
  421. TANGER_OCX_OBJ.SetReadOnly(false);
  422. break;
  423. case "3":
  424. TANGER_OCX_OBJ.SetReadOnly(true);
  425. break;
  426. default:
  427. break;
  428. }
  429. }
  430. }
  431. catch(err){
  432. }
  433. finally{
  434. }
  435. }
  436. function SaveAsHTML(URL,uploadfield,fileName)
  437. {
  438. try
  439. {
  440. var retStr = TANGER_OCX_OBJ.PublishAsHTMLToURL(
  441. URL,uploadfield,
  442. "__Click=0&subject="+escape(document.forms(0).Subject.value)+
  443. "&filename="+fileName,
  444. fileName
  445. );
  446. var newwin = window.open("","_blank","left=200,top=200,width=400,height=200,status=0,toolbar=0,menubar=0,location=0,scrollbars=0,resizable=0",false);
  447. var newdoc = newwin.document;
  448. newdoc.open();
  449. newdoc.write("<center><hr>"+retStr+"<hr><input type=button VALUE='关闭窗口' onclick='window.close()'></center>");
  450. newdoc.close();
  451. }
  452. catch(err){
  453. alert("不能保存到URL:" + err.number + ":" + err.description);
  454. }
  455. finally{
  456. }
  457. }