欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

如何在WPS中打开并启用JavaScript功能?

最编程 2024-02-22 11:44:27
...



WPS加载项是如何实现调用业务系统JS的 WPS通信原理 wpssdk

  • 一、业务系统调用WPS原理
  • 二、WPS调用业务系统JS的原理
  • End


反正自己也不专业,我这里就用大白话解释吧 -。-

一、业务系统调用WPS原理

WPS监听服务 端口58890(http) 58891(https) 进程:wpscloudsvr.exe

  • 应用系统调用wps的SDK后,sdk把应用系统的动作封装起来 -> 访问并传参给监听服务
    该监听服务(wpscloudsvr.exe)负责调起wps。实现无弹窗调起
  • 同理,调用wps套红,水印等功能,也是该方法封装

整个流程图是这样的

wps怎么启用javascript wps开启javascript_javascript

下图是调用WPS加载项功能的请求 /transfer/runParam

参数data中 ksowebstartupwps://后面的base64编码,就是封装好的动作和参数

wps怎么启用javascript wps开启javascript_javascript_02


那当该进程被关闭时怎么办?

请求超时,则直接将浏览器地址改为ksoWPSCloudSvr://start=RelayHttpServer(意为启动该服务)进行跳转

这个是浏览器自定义协议,由wps实现 类似Ftp:// http:// 等 是通过注册表实现的

此时监听服务已经启动,然后需要再次点击 重复上述步骤进行调用

如图 onerror里面触发打开监听服务

wps怎么启用javascript wps开启javascript_javascript_03

二、WPS调用业务系统JS的原理

点击执行业务系统函数handleOaFunc1 ,前端弹出提示框

这个功能真的是百思不得其解,可能是我太笨了(不是 >w<)

wps怎么启用javascript wps开启javascript_javascript_04


因为误认为这个是CS端掉起,我们打开Wireshark,发现:。。 见鬼了。

只有返回没有请求

wps怎么启用javascript wps开启javascript_javascript_05


查了后端主动发消息给前端相关的内容,发现网上有说两种方法

一种是websocket 一种是SSE(Server-Sent Events)

在wps提供的demo里面找对应的关键词 “EventSource”/“WebSocket” -> 没收获

也许有经验的人肯定第一时间会想到,这个之前是有一个请求的(没错其实就是这样)

我们刷新Demo页面,发现有一条连接一直处于挂起状态/askwebnotify

wps怎么启用javascript wps开启javascript_接口_06


当我们点击WPS里的按钮时该连接有了返回值(返回动作和参数),到这一步就是前端处理的事情了

然后随即立刻建立起下一个/askwebnotify 请求,继续挂起,直到返回

wps怎么启用javascript wps开启javascript_javascript_07


2021-7-1 更新:
这点新版本不会一直挂起了,现在的sdk方法是2秒超时,释放后再次请求。
但是当浏览器没选择该页签时,我在wps点击了多次这个执行业务系统函数handleOaFunc1 怎么办?

这里我们可以看到WPS客户端是按照消息队列进行返回的,当我们再选择页签到该页面的时候,接着收到消息,建立链接。我们的WPS依次按队列里面的动作进行返回

wps怎么启用javascript wps开启javascript_javascript_08

End

关于这个连接我们可以使用 netstat -ano 命令看端口监听情况

发现当点击这个按钮的时候 与wps监听服务58890 新建立了一个链接

50273 -> 50344

wps怎么启用javascript wps开启javascript_javascript_09


wps怎么启用javascript wps开启javascript_wps怎么启用javascript_10


推荐阅读