allWebPlugin中间件技术白皮书

作者 : admin 本文共3801个字,预计阅读时间需要10分钟 发布时间: 2024-06-16 共1人阅读

目录

开发背景

软件功能

软件特点

运行环境

浏览器插件集成步骤

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封装类对象,实现插件无缝嵌入浏览器及插件接口的调用。

allWebPlugin中间件技术白皮书插图

Javascript封装插件接口

使用javascript脚本对浏览器插件导出类的方法和属性进行封装,方便后续网页调用插件接口。例如:针对axvlc插件,首先新建一个allWebVLC.js文件,根据插件VLCPlugin2类,新建javascript的allWebVLCPlugin2(派生自NObject)类,并用javascript脚本封装插件VLCPlugin2类方法和属性。(如下图所示)

axvlc插件 VLCPlugin2 类

Javascript allWebVLCPlugin2

allWebPlugin中间件技术白皮书插图(1)allWebPlugin中间件技术白皮书插图(2)

  • 引入相关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类。

allWebPlugin中间件技术白皮书插图(3)

插件javascript封装类接口调用

插件对象创建成功之后,实例化插件javascript封装类对象。可以像传统插件接口调用一样,调用插件javascript封装类对象的方法和属性。如下图所示:

allWebPlugin中间件技术白皮书插图(4)

插件事件响应

         为了响应插件事件,需要在插件创建时,注册待响应的插件事件,实现插件响应函数。如下图所示:

allWebPlugin中间件技术白皮书插图(5)

  • 接口说明

  • 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

本站无任何商业行为
个人在线分享 » allWebPlugin中间件技术白皮书
E-->