OA集成WPS加载项时,点击客户端的关闭后,文档有做关闭,但是WPS客户端停留在首页
因为OA代码中监听了文档关闭事件(DocumentBeforeClose),并在这个事件中取消了本次关闭,同时也取消了客户端的关闭(wps.ApiEvent.Cancel=true).执行完OA的逻辑后,OA只调用了文档的关闭(doc.Close(0)),并未执行客户端的关闭。
在文档关闭方法后(doc.Close(0))的下一句加上以下方法,进行文档关闭: demo的common.js文件中的closeWpsIfNoDocument函数用以下方法替换一下
/** * 判断WPS中的文件个数是否为0,若为0则关闭WPS函数 * @param {*} name */ function closeWpsIfNoDocument() { var wpsApp = wps.Application; var docs = wpsApp.Documents;//文字 //var docs = wpsApp.Workbooks;//表格 //var docs = wpsApp.Presentations;//演示 if (!docs || docs.Count == 0) { wps.ApiEvent.Cancel = true; //根据业务可以选择是否退出进程 wpsApp.Quit();该函数必须加延迟,因为它的后面可能会有其他的OA代码逻辑并未执行完成 setTimeout(function(){ wpsApp.Quit(); },500)//若仍未关闭wps客户端,可以增加延迟执行的毫秒数,如:设置为3000毫秒 } }
场景
OA集成WPS加载项时,点击客户端的关闭后,文档有做关闭,但是WPS客户端停留在首页
原因
因为OA代码中监听了文档关闭事件(DocumentBeforeClose),并在这个事件中取消了本次关闭,同时也取消了客户端的关闭(wps.ApiEvent.Cancel=true).执行完OA的逻辑后,OA只调用了文档的关闭(doc.Close(0)),并未执行客户端的关闭。
解决方案
在文档关闭方法后(doc.Close(0))的下一句加上以下方法,进行文档关闭:
demo的common.js文件中的closeWpsIfNoDocument函数用以下方法替换一下
/** * 判断WPS中的文件个数是否为0,若为0则关闭WPS函数 * @param {*} name */ function closeWpsIfNoDocument() { var wpsApp = wps.Application; var docs = wpsApp.Documents;//文字 //var docs = wpsApp.Workbooks;//表格 //var docs = wpsApp.Presentations;//演示 if (!docs || docs.Count == 0) { wps.ApiEvent.Cancel = true; //根据业务可以选择是否退出进程 wpsApp.Quit();该函数必须加延迟,因为它的后面可能会有其他的OA代码逻辑并未执行完成 setTimeout(function(){ wpsApp.Quit(); },500)//若仍未关闭wps客户端,可以增加延迟执行的毫秒数,如:设置为3000毫秒 } }
📋 章节目录
场景 原因 解决方案