目录
开发背景
软件功能
软件特点
运行环境
浏览器插件集成步骤
allWebPlugin与浏览器、插件关系图
引入相关allWebPlugin JS
添加页面元素
创建插件容器及插件
插件javascript封装类接口调用
插件事件响应
接口说明
PluginHostCnt接口
方法
createContainer方法
createPlugin方法
get_pcid方法
RegisterEvent方法
NObject 接口
方法
constructor方法
InvokeObject方法
get_pcid方法
get_obj方法
咨询交流
-
开发背景
用户信息化系统往往会存在浏览器使用ActiveX或NPAPI插件,解决复杂技术和业务问题。但由于浏览器不断升级,推出各种限制,造成浏览器无法支持ActiveX插件,也无法支持新标准的NPAPI插件,因此用户系统也无法正常运行,只能让用户保持指定版本的浏览器来使用,造成用户工作不便,经常切换不同浏览器,维护成本大。针对此问题,我们使用全新技术,开发全新allWebPlugin产品解决。
-
软件功能
allWebPlugin中间件是一款为用户提供安全、可靠、易用的浏览器插件的中间件产品。将第三方(标准协议ActiveX)插件直接嵌入H5浏览器,实现插件加载、接口调用、事件回调等中间件产品,产品拥有自主知识产权。产品具有支持多浏览器、多操作系统、ActiveX、NPAPI标准协议控件的特点,并且调用接口友好、集成方便,为用户提供“信息化系统 + allWebPlugin + 插件 + 多浏览器”的解决方案。
-
软件特点
1)支持任何版本的H5浏览器,包括最新谷歌内核版本浏览器,如:谷歌、火狐、Edge、360、搜狗、微信内置浏览器等。
2)一次集成,所有浏览器都能运行,插件接口和事件调用脚本风格简单易懂,保持IE及谷歌浏览器脚本调用风格。
3)插件直接在浏览器中运行,不是单独应用程序或窗体。与页面无缝衔接,支持任意比例缩放、支持多标签加载。
4)插件方案相比H5“云架构”方案性价比更高,更易扩展,改造量小。
5)面向对象开发接口设计,更易调用。
-
运行环境
客户机
操作系统:WIN7、WIN8、WIN10、WIN11
最低配置:CPU P4 2.8G,内存4G,硬盘500G。
推荐配置:Intel i3及以上处理器,内存8G以上,SSD硬盘 128G以上。
-
浏览器插件集成步骤
-
allWebPlugin与浏览器、插件关系图
业务系统调用PluginHostCnt创建allWebPlugin中间件,allWebPlugin中间件会嵌入浏览器页面,并在内部容器中创建客户ActiveX或NPAPI 插件,根据插件标识实例化JS封装类对象,实现插件无缝嵌入浏览器及插件接口的调用。
Javascript封装插件接口
使用javascript脚本对浏览器插件导出类的方法和属性进行封装,方便后续网页调用插件接口。例如:针对axvlc插件,首先新建一个allWebVLC.js文件,根据插件VLCPlugin2类,新建javascript的allWebVLCPlugin2(派生自NObject)类,并用javascript脚本封装插件VLCPlugin2类方法和属性。(如下图所示)
axvlc插件 VLCPlugin2 类
Javascript allWebVLCPlugin2类
-
引入相关allWebPlugin JS
为了页面加载插件,需要引入allWebPlugin.Common.js allWebPlugin.UI.js及插件封装js文件。例如,axvlc插件,需要引入allWebVLC.js插件封装js文件。如下图所示:
添加页面元素
在需要展示插件的位置添加canvas页面元素。如下图所示:
Sorry, It looks as though your browser does not support the canvas tag.
创建插件容器及插件
首先,实例化PluginHostCnt类,使用CreateContainer方法创建插件容器子窗口,然后使用createPlugin接口创建插件,并实例化allWebVLCPlugin2类。
插件javascript封装类接口调用
插件对象创建成功之后,实例化插件javascript封装类对象。可以像传统插件接口调用一样,调用插件javascript封装类对象的方法和属性。如下图所示:
插件事件响应
为了响应插件事件,需要在插件创建时,注册待响应的插件事件,实现插件响应函数。如下图所示:
-
接口说明
-
PluginHostCnt接口
创建插件之前,必须先创建插件容器程序;不同插件类型,使用不同插件容器程序。ActiveX插件使用PluginContainer 插件表示;NPAPI 插件使用 NPluginContainer(预留,NPAPI插件支持正在夜以继日开发中)。
-
方法
-
createContainer方法
功能说明:创建插件容器。
参数说明:
canvas: 网页canvas画布元素
progID: 字符串 插件容器标识
license: 字符串 授权信息
返回值:
类型:布尔
当返回值为true时表示成功,其它表示失败。
示例
if(hostCnt.createContainer(canvas,"PluginContainer",license) == true){
hostCnt.RegisterEvent("OnCreated;OnCommand;OnRibbonCtrlCommand");
CreatePlugin();
}
-
createPlugin方法
功能说明:创建插件。
参数说明:
clsid: 字符串 插件ID (ActiveX classID)。
返回值:
类型:布尔
当返回值为true时表示成功,其它表示失败。
示例
var varResponse = hostCnt.createPlugin("{6888ECA8-57D0-6E0E-9B9B-F1FF9B2DBD86}");
if(varResponse != null){
pluginObj = new allWebPluginOffice(varResponse.pcid,varResponse.ret.v,varResponse.ret.t);
}
-
get_pcid方法
功能说明:获取插件容器ID。
参数说明:无
返回值:
类型:字符串
返回当前插件容器ID,每个插件拥有唯一的ID。
示例
var varResponse = hostCnt.createPlugin("{6888ECA8-57D0-6E0E-9B9B-F1FF9B2DBD86}");
if(varResponse != null){
pluginObj = new allWebPluginOffice(varResponse.pcid,varResponse.ret.v,varResponse.ret.t);
}
-
RegisterEvent方法
功能说明:注册 createPlugin 插件的响应事件,事件之间通过";"隔开。
参数说明:无
返回值:无
示例
hostCnt.RegisterEvent("OnCreated;OnCommand;OnRibbonCtrlCommand");
-
NObject 接口
所有插件可操作类都派生自NObject类。
-
方法
-
constructor方法
功能说明:构建NObject对象。
参数说明:
pcid:字符串 插件容器ID
obj: 字符串 插件对象标识
返回值:无
-
InvokeObject方法
功能说明:调用插件对象方法或属性。
参数说明:不定长参数
fun: 字符串 插件对象方法名
params: 不定长参数 方法的参数
返回值:
类型:可变类型。
返回接口结果
示例
get audio() {
var resp = this.InvokeObject("get_audio");
var ret;
if(resp === undefined)
{
return ret;
}
ret = new audio(this.pcid,resp.v);
return ret;
}
-
get_pcid方法
功能说明:获取当前插件容器标识。
参数说明:无
返回值:
类型:字符串。
返回插件容器标识
示例
ret = ActiveDocument.InvokeObject("Range",0,0);
if(ret === null)
{
return;
}
var myRange = new NObject(pluginObj.get_pcid(),ret.v);
-
get_obj方法
功能说明:获取当前对象标识。
参数说明:无
返回值:
类型:整形。
返回当前对象
咨询交流
欢迎大家咨询交流,微信:yunkaipx(常用) QQ 78418227(很少用)
allWebPlugin中间件下载地址
链接:https://pan.baidu.com/s/1AZbVbIDbbfsUq_q7F4E32w
提取码:aihz
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
还没有评论,来说两句吧...