一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种浏览器加载插件的装置和方法与流程

2022-11-14 13:05:29 来源:中国专利 TAG:


1.本发明涉及浏览器领域,尤其涉及一种浏览器加载插件的装置和方法。


背景技术:

2.术语解释:active x插件:microsoft公司对于一系列策略性面向对象程序技术和工具的称呼,其中主要的技术是组件对象模型(com),与本文中的active x插件等名词等同含义。仅微软ie浏览器支持active x插件,但是微软于2022年6月15日21:00时停止支持ie浏览。npapi插件:是netscape navigator、mozilla suite、mozilla sea monkey和mozilla firefox等gecko引擎浏览器与apple safari和google chrome等webkit引擎浏览器所使用的类似active x的插件接口。谷歌的chrome和微软的edge浏览器已经宣布放弃对npapi插件的支持。ppapi插件:是chrome浏览器在原有网景npapi(netscape plugin api)基础上发展而来的,将外挂插件全部放到沙盒里运行。2022年6月,google宣布未来将终止所有平台上对ppapi的支持。html5:它是构建web内容的一种语言描述方式。html5是互联网的下一代标准,是构建以及呈现互联网内容的一种语言方式.被认为是互联网的核心技术之一。html5浏览器:支持html5技术的浏览器,目前主流浏览器都支持html5技术,如ie、火狐、谷歌等。canvas (绘图画布)元素:可以实现画布功能,该元素通过自带的api结合使用javascript脚本语言在网页上绘制图形和处理,拥有实现绘制线条、弧线以及矩形,用样式和颜色填充区域,书写样式化文本,以及添加图像的方法,且使用javascript可以控制其每一个像素。textarea元素:html5文本输入元素。
3.浏览器插件是浏览器的重要组成部分,丰富浏览器的能力和应用。但出于对安全性的考虑,因为active x、npapi、ppapi插件可以窃取操作系统底层资源,容易发起恶意攻击,所以,各浏览器对插件的支持越来越弱,甚至有些浏览器停止对插件的支持,如火狐浏览器。而新版chrome内核浏览器也仅支持ppapi插件,且在未来将放弃对ppapi插件的支持;微软ie浏览器已经退出历史舞台,停止维护更新,这意味着大量传统可信任的插件产品将不再被浏览器支持。浏览器html5技术虽然强大,但是还有一些实现不了本地应用,尤其涉及本地资源访问和复杂ui交互的应用,如访问系统外设及office大型办公软件的应用。传统解决浏览器插件加载方案有以下两种。利用chrome内核浏览器ppapi技术方法:使用ppapi插件程序为chrome浏览器和active x插件之间搭起一座桥梁,使得chrome浏览器能像ie浏览器使用active x一样,通过javascript创建和使用active x。这种方案在实际使用中存在遮挡页面元素、页面容易崩溃的问题,且仅支持chrome内核浏览器,随时可能被chrome禁用。
浏览器弹窗方案:通俗的讲,就是在浏览器需要支持插件的地方,通过请求本地服务,启动一个支持active x或npapi插件的浏览器或者插件容器程序。这种方案用户操作困难,人机交互困难,用户体验极差。
4.本发明的目的:提供一种浏览器加载插件的装置和方法,使所有浏览器能像ie浏览器使用active x插件一样,通过javascript脚本调用active x、npapi插件及保留浏览器插件原有的人机交互习惯。


技术实现要素:

5.本发明克服现有技术的不足,提供了一种浏览器加载插件的装置和方法。
6.一种浏览器加载插件的装置,其特征在于,包括:浏览器插件交互子系统、浏览器插件服务子系统及浏览器插件容器子系统。所述浏览器插件交互子系统运行在浏览器端,采用浏览器都支持的html5技术实现。采用html5 canvas绘图元素展示插件界面图像,监听canvas区域展示区域鼠标输入事件;利用textarea元素监听键盘输入事件;采用javascript技术实现插件对象方法、属性和事件封装;采用web socket及http通信技术与所述浏览器插件服务子系统通信。所述浏览器插件服务子系统是所述浏览器插件交互子系统与所述浏览器插件容器子系统的桥梁;维持浏览器插件交互子系统与浏览器插件容器子系统之间的对应关系,是整个装置的数据交互中枢;为所述浏览器插件容器子系统创建和维护虚拟桌面d运行环境。所述浏览器插件容器子系统提供插件运行容器,通过插件标识class id或prog id创建指定的插件,插件容器运行在上述虚拟桌面模块创建的虚拟桌面d内;执行所述浏览器插件交互子系统发送过来的插件接口调用命令数据包,并返回执行结果,实现插件方法和属性远程调用;将所述浏览器插件交互子系统发送过来的鼠标键盘输入事件命令数据包转换成插件的鼠标键盘输入事件;为所述浏览器插件交互子系统提供实时插件界面图像,使用户操作所述浏览器插件交互子系统,就像操作插件本身;并对插件对象进行管理,实现插件创建、销毁及插件事件远程推送。
7.优选地,所述浏览器插件交互子系统包括插件界面展示模块、鼠标键盘监听模块、jsobj模块及网络模块。其特征如下:所述插件界面展示模块处理所述网络模块转发过来的插件界面图像命令数据包p,并将其解析成图像pic。插件界面展示模块由浏览器 html5 canvas元素组成,利用canvas元素绘制图像的功能,将前述图像pic实时展示出来,实现插件界面在浏览器运行的效果。所述鼠标键盘监听模块由浏览器 html5canvas和textarea元素组成,textarea元素依附在canvas之上,采集canvas区域鼠标和键盘输入事件,调用所述网络模块接口,将前述鼠标和键盘事件封装成鼠标键盘输入命令数据包,经所述浏览器插件服务子系统,发送给所述浏览器插件容器子系统。所述jsobj模块将active x、npapi插件创建、销毁以及插件的方法、属性、事件封装成javascript类jsplugin,简化业务系统调用插件的难度。前述javascript类jsplugin
将插件对象标识、请求方法或属性及其参数,封装插件调用命令数据包,通过所述网络模块采用http网络请求发送给所述浏览器插件服务子系统;处理所述网络模块接收的插件调用返回命令数据包,获取插件方法或属性调用返回结果。所述网络模块提供网络数据的发送和接收接口。浏览器网络模块提供web socket通信及http通信。web socket提供异步通信机制,是插件事件、插件界面图像推送优先通信机制。http通信采用同步的方式,适用于所述jsobj模块调用插件方法和属性。
8.优选地,所述浏览器插件服务子系统包括web服务、虚拟桌面模块、插件容器管理模块、安全策略模块及i/o通信模块。其特征如下:所述web服务提供web socket及http服务。为所述浏览器插件交互子系统和所述浏览器插件服务子系统建立网络链接;使命令数据包能在两者之间有序交互。所述虚拟桌面模块使用操作系统虚拟桌面接口,创建、打开、关闭自定义虚拟桌面d,并将所述浏览器插件容器子系统运行在虚拟桌面d内,避免所述浏览器插件容器子系统在用户操作桌面显示,实现插件在所述浏览器插件容器子系统内隐藏运行。所述插件容器管理模块用于管理所述浏览器插件容器子系统,实现所述浏览器插件容器子系统创建、维护、调度和销毁;维持web服务链接与所述浏览器插件容器子系统对应关系;维持所述浏览器插件交互子系统和所述浏览器插件容器子系统之间数据包转发,将网络包转成i/o通信数据包,或将i/o通信数据包转换成网络包。所述安全策略模块在插件创建之前,对插件安全性进行验证。只有通过安全策略验证的插件才允许创建;未通过安全策略验证的插件,不允许创建。所述i/o通信模块采用网络或内存共享等方式,支持同步和异步通信方式,实现与所述浏览器插件容器子系统之间数据包交互,其提供发送接口,实现数据包发送;其提供接收接口,实现数据包初步解封,转发给对应的处理模块。优选地,所述浏览器插件容器子系统包括插件容器i/o通信模块、鼠标键盘模拟模块、界面截图模块、插件管理模块。其特征如下:所述插件容器i/o通信模块采用网络或内存共享等方式,支持同步和异步通信方式,实现与所述浏览器插件服务子系统之间数据包交互。其提供发送接口,实现数据包发送;其提供接收接口,实现数据包初步解封,转发给对应的处理模块。所述鼠标键盘模拟模块处理所述插件容器i/o通信模块转发过来的鼠标键盘输入事件命令数据包,将其转换成前述虚拟桌面d下插件的鼠标键盘输入事件。所述界面截图模块将实时采集插件窗口界面图像,为了减少内存,提高通信效率,对采集的图像进行yuv422编码,封装成插件界面图像命令数据包p,调用所述插件容器i/o通信模块发送接口,将其推送给所述浏览器插件服务子系统。所述插件管理模块负责插件的创建、显示、销毁、事件处理及插件接口调用;处理所述插件容器i/o通信模块转发过来的插件接口调用命令数据包,动态调用插件方法和属性,并将处理结果封装成数据包,原路返回所述浏览器插件服务子系统;处理插件触发事件,将其封装成插件事件命令数据包,通过所述插件容器i/o通信模块推送给所述浏览器插件服务子系统。
9.一种浏览器加载插件的方法,其特征在于包括:浏览器创建插件虚拟桌面运行的方法;浏览器javascript脚本调用插件方法和属性的方法;浏览器插件事件javascript响
应的方法;浏览器展示插件界面图像的方法及浏览器插件响应鼠标键盘输入的方法。
10.优选地,所述浏览器创建插件虚拟桌面运行的方法,包括以下步骤:步骤一,创建命令数据包封装及路由:所述浏览器插件交互子系统中所述jsobj模块将插件标识class id、创建插件命令cmd1封装数据包p1,通过所述网络模块http请求,发送给所述浏览器插件服务子系统的所述web服务;所述web服务将数据包p1转发给所述插件容器管理模块。步骤二,创建插件容器子系统:所述插件容器管理模块解析数据包p1,获取创建插件命令cmd1及插件标识class id信息。所述容器管理模块调用所述安全策略模块,验证插件是否安全,如果不安全,则生成创建失败错误码result;将错误码result和插件创建返回命令封装成数据包p2,返回数据包p2;否则,将使用所述虚拟桌面模块创建虚拟桌面环境d,生成插件容器子系统实例,并将其标识为pcid。通过命令行方式传递pcid,创建所述浏览器插件容器子系统;指定所述浏览器插件容器子系统在前述虚拟桌面环境d运行,所述容器管理模块将数据包p1,经过所述i/o通信模块发送给所述浏览器插件容器子系统。步骤三,插件创建及生成返回数据包:所述插件容器i/o通信模块接收到数据包p1后,进行初步解析,将其转发给所述插件管理模块;所述插件管理模块将提取创建插件命令cmd1和插件标识class id信息,创建对应的插件,获取创建执行错误码result及实例化插件对象句柄pid,如果创建失败,pid为0。所述插件管理模块将所述浏览器插件容器子系统标识pcid、插件创建返回命令、执行错误码result、插件对象句柄pid封装成数据包p3,将其发送给所述浏览器插件服务子系统。步骤四,返回数据包路由:所述i/o通信模块接收到数据包p3或p2后进行初步解析,将其派发给所述插件容器管理模块,所述插件容器管理模块将数据包p2或p3,通过所述web服务模块返回给所述浏览器插件交互子系统的所述网络模块,所述网络模块转发给所述jsobj模块的创建插件方法。步骤五,解析返回数据包及创建javascript对象:创建插件方法将解析数据包p2或p3内容,通过执行错误码result判断插件是否创建成功,如果创建失败,则提示错误信息;否则,使用pcid及pid信息生成插件对应的javascript对象。优选地,所述jsobj模块完成插件对象创建之后,需要绑定所述插件界面展示模块;与所述浏览器服务子系统web服务模块建立web socket链接。优选地,本发明支持多个插件同时加载,插件容器子系统标识pcid用于标识一个插件容器子系统,它将所述浏览器插件交互子系统、所述浏览器插件服务子系统及浏览器插件容器子系统的关联起来,使数据包能在各个子系统模块之间有序交互。优选地,所述数据包,是一种按照协议封装的数据块,其固定字段标识数据包命令类型。
11.优选地,所述浏览器javascript脚本调用插件方法和属性的方法,包括以下步骤:步骤一,javascript脚本类封装:所述浏览器jsobj模块为了实现插件接口调用,与ie浏览器调用插件接口调用习惯保持一致。按照插件方法或属性名称、参数、返回值类型进行javascript脚本类方法或属性的封装。步骤二,数据包封装:在javascript脚本类方法或属性实现中,将上述插件容器子系统标识pcid、插件对象标识pid、接口调用命令、方法或属性名称和参数封装成插件接口
调用命令数据包p20。步骤三,数据包路由:所述浏览器jsobj模块调用所述网络模块发送接口,将数据包p20发送给所述web服务,所述web服务转发数据包p20给所述插件容器管理模块,所述插件容器管理模块根据插件容器子系统标识pcid转给对应的所述浏览器插件容器子系统的所述插件管理模块。步骤四,插件接口调用,生成返回数据包:所述插件管理模块获取命令类型、插件对象标识pid、方法或属性名称及参数内容。根据插件对象标识pid,查找对应的插件对象,如果查询不到对应的插件对象,则返回错误码result;否则继续查询对应插件对象是否存在上述方法或属性,如果不存在,则直接返回错误码result,否则,调用插件对象方法或属性,获取执行返回值,且错误码result为0。所述浏览器插件容器子系统将返回值、返回值类型、插件容器子系统标识pcid、插件对象标识pid和接口调用命令封成数据包p21,步骤五,返回数据包路由:所述插件容器i/o通信模块发送数据包p21给所述i/o通信模块;所述i/o通信模块接收数据包p21; 经所述web服务模块http链接,转发给所述网络模块,返回给所述jsobj模块。步骤六,解析返回数据包及获取返回值:所述jsobj模块解析数据包p21,通过错误码result判断接口或属性是否调用成功,如果调用失败,则提示错误信息;否则,获取数据包p21返回值内容。
12.优选地,所述浏览器插件事件javascript响应的方法,包括以下步骤:步骤一,插件事件数据包封装:所述插件管理模块监听插件所有事件。当插件触发事件时,其将插件事件命令类型、插件容器子系统标识pcid,插件对象标识pid,事件方法名称、参数及参数类型封装成数据包p30。步骤二,数据包路由:所述插件容器i/o通信模块将数据包p30,发送给所述i/o通信模块。所述i/o通信模块解析数据包p30,根据插件事件命令类型,将数据包p30转发给所述插件容器管理模块。所述插件容器管理模块解析数据包p30,获取所述浏览器插件容器子系统标识pcid,通过所述浏览器插件容器子系统标识pcid,获取所述网络模块与所述web服务的web socket链接sock。 将数据包p30通过web socket链接sock发送给所述网络模块。步骤三,javascript脚本响应:所述网络模块解析数据包p30之后,根据插件事件命令类型、事件方法及事件参数,动态调用jsobj事件响应方法。
13.优选地,所述浏览器展示插件界面图像的方法,包括以下步骤:步骤一,界面图像数据包封装:所述界面截图模块周期性定时获取插件容器界面图像,将图像进行yuv422编码,生成图像编码数据。其将所述浏览器插件容器子系统标识pcid,插件对象标识pid、插件界面图像命令类型及图像编码数据打包成数据包p40。步骤二,数据包路由:所述插件容器i/o通信模块将数据包p40,发送给所述所述i/o通信模块。所述i/o通信模块解析数据包p40,根据插件界面图像命令类型,将数据包p40转发给所述插件容器管理模块。所述插件容器管理模块解析数据包p40,获取插件容器子系统标识pcid,通过插件容器子系统标识pcid,获取所述网络模块与所述web服务的web socket链接sock。 将数据包p40通过web socket链接sock发送给所述网络模块。步骤三,插件界面图像展示:所述网络模块解析数据包p40之后,根据插件界面图像命令类型,调用所述插件界面展示模块显示方法,将图像编码数据渲染在浏览器canvas
元素上,从而实现插件在浏览器页面运行的效果。
14.优选地,所述浏览器插件响应鼠标键盘输入的方法,包括以下步骤:步骤一,鼠标键盘输入事件数据包封装:所述鼠标键盘监听模块监听所述浏览器插件展示区域鼠标键盘输入事件,将前述事件、鼠标键盘输入事件命令类型、上述插件容器子系统标识pcid,插件对象标识pid封装成数据包p50。步骤二,数据包路由:所述网络模块采用web socket通信方式,将数据包p50发送给所述浏览器插件服务子系统。所述web服务模块解析数据包p50,根据鼠标键盘输入事件命令类型,将数据包p50转发给所述插件容器管理模块。所述插件容器管理模块解析数据包p50,获取插件容器子系统标识pcid,通过插件容器子系统标识pcid,获取对应所述浏览器插件容器子系统,将数据包p50通过所述i/o通信模块,发送给所述浏览器插件容器子系统的所述插件容器i/o通信模块。步骤三,模拟鼠标键盘输入事件:所述插件容器i/o通信模块解析数据包p50后,根据鼠标键盘输入事件命令类型,调用所述鼠标键盘模拟模块将鼠标键盘输入事件转成插件的鼠标键盘事件,驱动给插件界面。至此,插件界面就可以响应鼠标键盘输入事件。
15.本发明的有益效果:由于主流浏览器都支持html5技术,所以本发明可以满足主流浏览器插件加载的需求,浏览器兼容性更好。所有的插件都运行在独立的插件容器子系统内部,不存在插件无响应导致浏览器卡死,崩溃的问题;即使插件容器子系统崩溃了,浏览器页面也不会崩溃,可以重新加载插件继续使用,提升了产品稳定性。插件界面是通过浏览器html5 canvas画布元素渲染展示,不存在插件遮挡浏览器页面元素的问题,能够支持页面层次复杂应用场景,提升了产品的适用性。所有支持html5技术的浏览器能像ie浏览器使用active x插件一样,通过javascript脚本调用active x、npapi插件接口及保留浏览器插件原有的人机交互习惯。
附图说明
16.图1是本发明的结构原理图;图2是本发明浏览器创建插件虚拟桌面运行的流程图;图3是本发明浏览器javascript脚本调用插件方法和属性的流程图;图4是本发明浏览器插件事件javascript响应的流程图;图5是本发明浏览器展示插件界面图像的流程图;图6是本发明浏览器插件响应鼠标键盘输入的流程图;
具体实施方式
17.下面将结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
18.参阅图1本发明提供了一种浏览器加载插件的装置,包括:浏览器插件交互子系统、浏览器插件服务子系统、浏览器插件容器子系统,其特征在于:所述浏览器插件交互子系统运行在浏览器端,采用浏览器都支持的html5技术实
现。采用html5 canvas绘图元素展示插件界面图像,监听canvas区域展示区域鼠标输入事件;利用textarea元素监听键盘输入事件;采用javascript技术实现插件对象方法、属性和事件封装;采用web socket及http通信技术与所述浏览器插件服务子系统通信。所述浏览器插件服务子系统是所述浏览器插件交互子系统与所述浏览器插件容器子系统的桥梁;维持浏览器插件交互子系统与浏览器插件容器子系统之间的对应关系,是整个装置的数据交互中枢;为所述浏览器插件容器子系统创建和维护虚拟桌面d运行环境。所述浏览器插件容器子系统提供插件运行容器,通过插件标识class id或prog id创建指定的插件,插件容器运行在上述虚拟桌面模块创建的虚拟桌面d内,将所述浏览器插件交互子系统发送过来的鼠标键盘输入事件命令数据包转换成插件的鼠标键盘输入事件;为所述浏览器插件交互子系统提供实时插件界面图像,使用户操作所述浏览器插件交互子系统中所述插件界面展示模块,就像操作插件本身。并对插件对象进行管理,实现插件方法、属性远程调用及插件事件远程推送。
19.优选地,所述浏览器插件交互子系统包括插件界面展示模块、鼠标键盘监听模块、jsobj模块及网络模块。其特征如下:所述插件界面展示模块处理所述网络模块转发过来的插件界面图像命令数据包p,并将其解析成图像pic。插件界面展示模块由浏览器 html5 canvas元素组成,利用canvas元素绘制图像的功能,将前述图像pic实时展示出来,实现插件界面在浏览器运行的效果。所述鼠标键盘监听模块由浏览器 html5canvas和textarea元素组成,textarea元素依附在canvas之上,采集canvas区域鼠标和键盘输入事件,调用网络模块接口,将前述鼠标和键盘事件封装成鼠标键盘输入命令数据包,经所述浏览器插件服务子系统,发送给所述浏览器插件容器子系统。所述jsobj模块将active x、npapi插件创建、销毁以及插件的方法、属性、事件封装成javascript类jsplugin,简化业务系统调用插件的难度。前述javascript类jsplugin将插件对象标识、请求方法或属性及其参数,封装插件调用命令数据包,通过所述网络模块采用http网络请求发送给所述浏览器插件服务子系统;处理所述网络模块接收的插件调用返回命令数据包,获取插件方法或属性调用返回结果。所述网络模块提供网络数据的发送和接收接口。浏览器网络模块提供web socket通信及http通信。web socket提供异步通信机制,是插件事件、插件界面图像推送优先通信机制。http通信采用同步的方式,适用于所述jsobj模块调用插件方法和属性。
20.优选地,所述浏览器插件服务子系统包括web服务、虚拟桌面模块、插件容器管理模块、安全策略模块及i/o通信模块。其特征如下:所述web服务提供web socket及http服务。提供web socket及http服务;为所述浏览器插件交互子系统和所述浏览器插件服务子系统建立网络链接;使命令数据包能在两者之间有序交互。所述虚拟桌面模块使用操作系统虚拟桌面接口,创建、打开、关闭自定义虚拟桌面d,并将所述浏览器插件容器子系统运行在虚拟桌面d内,避免所述浏览器插件容器子系统在用户操作桌面显示,实现插件在所述浏览器插件容器子系统内隐藏运行。
优选地,在windows系统中,使用windows操作系统提供的createdesktop、opendesktop、closedesktop接口实现虚拟窗口的创建、打开、关闭;使用createprocess创建子进程,其startupinfo参数中lpdesktop用于指定虚拟桌面名称,即可实现子进程在指定的虚拟桌面运行。所述插件容器管理模块用于管理所述浏览器插件容器子系统,实现所述浏览器插件容器子系统创建、维护、调度和销毁;维持web服务链接与所述浏览器插件容器子系统对应关系;维持所述浏览器插件交互子系统和所述浏览器插件容器子系统之间数据包转发,将网络包转成i/o通信数据包,或将i/o通信数据包转换成网络包。所述安全策略模块在插件创建之前,对插件安全性进行验证。只有通过安全策略验证的插件才允许创建;未通过安全策略验证的插件,不允许创建。所述i/o通信模块采用网络或内存共享等方式,支持同步和异步通信方式,实现与所述浏览器插件容器子系统之间数据包交互;其提供发送接口,实现数据包发送;其提供接收接口,实现数据包初步解封,转发给对应的处理模块。
21.优选地,所述浏览器插件容器子系统包括插件容器i/o通信模块、鼠标键盘模拟模块、界面截图模块、插件管理模块。其特征如下:所述插件容器i/o通信模块采用网络或内存共享等方式,支持同步和异步通信方式,实现与所述浏览器插件服务子系统之间数据包交互。其提供发送接口,实现数据包发送;其提供接收接口,实现数据包初步解封,转发发给对应的处理模块。所述鼠标键盘模拟模块处理所述插件容器i/o通信模块转发过来的鼠标键盘输入事件命令数据包,将其转换成前述虚拟桌面d下插件的鼠标键盘输入事件。所述界面截图模块将实时采集插件窗口界面图像,为了减少内存,提高通信效率,对采集的图像进行yuv422编码,封装成插件界面图像命令数据包p,调用所述插件容器i/o通信模块发送接口,将其推送给所述浏览器插件服务子系统。优选地,在windows系统中,虚拟桌面没有激活时,也就是隐藏的情况下,不能通过获取虚拟桌面设备dc来获取桌面截图图像。因此,只能分别获取应用程序顶层窗口设备dc方式进行窗口截图,然后根据插件大小,提前生成一张跟插件窗口大小一致的设备dc;再根据插件窗口之间的位置关系,复制在前述设备dc上,从而实现应用插件容器子系统插件界面截图。所述插件管理模块负责插件的创建、显示、销毁、事件及插件接口调用;处理所述插件容器i/o通信模块转发过来的插件接口调用命令数据包,动态调用插件方法和属性,并将处理结果封装成数据包,原路返回所述浏览器插件服务子系统;处理插件触发事件,将其封装成插件事件命令数据包,通过所述插件容器i/o通信模块推送给所述浏览器插件服务子系统。
22.一种浏览器加载插件的方法,其特征在于包括:浏览器创建插件虚拟桌面运行的方法;浏览器javascript脚本调用插件方法和属性的方法;浏览器插件事件javascript响应的方法;浏览器展示插件界面图像的方法及浏览器插件响应鼠标键盘输入的方法。
23.参阅图2本发明提供一种浏览器创建插件虚拟桌面运行的方法,包括以下步骤:步骤一,创建命令数据包封装及路由:所述浏览器插件交互子系统中所述jsobj模块将插件标识class id、创建插件命令cmd1封装数据包p1,通过所述网络模块http请求,发
送给所述浏览器插件服务子系统中所述web服务;所述web服务将数据包p1转发给所述插件容器管理模块。步骤二,创建插件容器子系统:所述插件容器管理模块解析数据包p1,获取创建插件命令cmd1及插件标识class id信息。所述容器管理模块调用所述安全策略模块,验证插件是否安全,如果不安全,则生成创建失败错误码result;将错误码result和插件创建返回命令封装成数据包p2,返回数据包p2;否则,将使用虚拟桌面模块创建虚拟桌面环境d,生成插件容器子系统实例,并将其标识为pcid。通过命令行方式传递pcid,创建所述浏览器插件容器子系统;指定所述浏览器插件容器子系统在前述虚拟桌面环境d运行,所述容器管理模块将数据包p1,经过所述i/o通信模块发送给所述浏览器插件容器子系统。步骤三,插件创建及生成返回数据包:所述插件容器i/o通信模块接收到数据包p1后,进行初步解析,将其转发给所述插件管理模块;所述插件管理模块将提取创建插件命令cmd1和插件标识class id信息,创建对应的插件,获取创建执行错误码result及实例化插件对象句柄pid,如果创建失败,pid为0。所述插件管理模块将所述浏览器插件容器子系统标识pcid、插件创建返回命令、执行错误码result、插件对象句柄pid封装成数据包p3,将其发送给所述浏览器插件服务子系统。步骤四,返回数据包路由:所述i/o通信模块接收到数据包p3或p2后进行初步解析,将其派发给所述插件容器管理模块,所述插件容器管理模块将数据包p2或p3,通过所述web服务模块返回给所述浏览器插件交互子系统的所述网络模块,所述网络模块转发给所述jsobj模块的创建插件方法。步骤五,解析返回数据包及创建javascript对象:创建插件方法将解析数据包p2或p3内容,通过执行错误码result判断插件是否创建成功,如果创建失败,则提示错误信息;否则,使用pcid及pid信息生成插件对应的javascript对象。优选地,所述jsobj模块完成插件对象创建之后,需要绑定所述插件界面展示模块;与所述浏览器服务子系统web服务模块建立web socket链接。优选地,本发明支持多个插件同时加载,插件容器子系统标识pcid用于标识一个插件容器子系统,它将所述浏览器插件交互子系统、所述浏览器插件服务子系统及浏览器插件容器子系统的关联起来,使数据包能在各个子系统模块之间有序交互。优选地,所述数据包,是一种按照协议封装的数据块,其固定字段标识数据包命令类型。
24.优选地,参阅图3本发明提供一种浏览器javascript脚本调用插件方法和属性的方法,包括以下步骤:步骤一,javascript脚本类封装:所述浏览器jsobj模块为了实现插件接口调用,与ie浏览器调用插件接口调用习惯保持一致。按照插件方法或属性名称、参数、返回值类型进行javascript脚本类方法或属性的封装。步骤二,数据包封装:在javascript脚本类方法或属性实现中,将上述插件容器子系统标识pcid、插件对象标识pid、接口调用命令、方法或属性名称和参数封装成插件接口调用命令数据包p20。步骤三,数据包路由:所述浏览器jsobj模块调用所述网络模块发送接口,将数据包p20发送给所述web服务,所述web服务转发数据包p20给所述插件容器管理模块,所述插
件容器管理模块根据插件容器子系统标识pcid转给对应的所述浏览器插件容器子系统的所述插件管理模块。步骤四,插件接口调用,生成返回数据包:所述插件管理模块获取命令类型、插件对象标识pid、方法或属性名称及参数内容。根据插件对象标识pid,查找对应的插件对象,如果查询不到对应的插件对象,则返回错误码result;否则继续查询对应插件对象是否存在上述方法或属性,如果不存在,则直接返回错误码result,否则,调用插件对象方法或属性,获取执行返回值,且错误码result为0。所述浏览器插件容器子系统将返回值、返回值类型、插件容器子系统标识pcid、插件对象标识pid和接口调用命令封成数据包p21,步骤五,返回数据包路由:所述插件容器i/o通信模块发送数据包p21给所述i/o通信模块;所述i/o通信模块接收数据包p21; 经所述web服务模块http链接,转发给所述网络模块,返回给所述jsobj模块。步骤六,解析返回数据包及获取返回值:所述jsobj模块解析数据包p21,通过错误码result判断接口或属性是否调用成功,如果调用失败,则提示错误信息;否则,获取数据包p21返回值内容。
25.优选地,参阅图4本发明提供一种浏览器插件事件javascript响应的方法,包括以下步骤:步骤一,插件事件数据包封装:所述插件管理模块监听插件所有事件。当插件触发事件时,其将插件事件命令类型、插件容器子系统标识pcid,插件对象标识pid,事件方法名称、参数及参数类型封装成数据包p30。步骤二,数据包路由:所述插件容器i/o通信模块将数据包p30,发送给所述i/o通信模块。所述i/o通信模块解析数据包p30,根据插件事件命令类型,将数据包p30转发给所述插件容器管理模块。所述插件容器管理模块解析数据包p30,获取所述浏览器插件容器子系统标识pcid,通过所述浏览器插件容器子系统标识pcid,获取所述网络模块与所述web服务的web socket链接sock。 将数据包p30通过web socket链接sock发送给所述网络模块。步骤三,javascript脚本响应:所述网络模块解析数据包p30之后,根据插件事件命令类型、事件方法及事件参数,动态调用jsobj事件响应方法。
26.优选地,参阅图5本发明提供一种浏览器展示插件界面图像的方法,包括以下步骤:步骤一,界面图像数据包封装:所述界面截图模块周期性定时获取插件容器界面图像,将图像进行yuv422编码,生成图像编码数据。其将所述浏览器插件容器子系统标识pcid,插件对象标识pid、插件界面图像命令类型及图像编码数据打包成数据包p40。步骤二,数据包路由:所述插件容器i/o通信模块将数据包p40,发送给所述i/o通信模块。所述i/o通信模块解析数据包p40,根据插件界面图像命令类型类型,将数据包p40转发给所述插件容器管理模块。所述插件容器管理模块解析数据包p40,获取插件容器子系统标识pcid,通过插件容器子系统标识pcid,获取所述网络模块与所述web服务的web socket链接sock。 将数据包p40通过web socket链接sock发送给所述网络模块。步骤三,插件界面图像展示:所述网络模块解析数据包p40之后,根据插件界面图像命令类型,调用所述插件界面展示模块显示方法,将图像编码数据渲染在浏览器canvas元素上,从而实现插件在浏览器页面运行的效果。
27.优选地,参阅图6本发明提供一种浏览器插件响应鼠标键盘输入的方法,包括以下步骤:步骤一,鼠标键盘输入事件数据包封装:所述鼠标键盘监听模块监听所述浏览器插件展示区域鼠标键盘输入事件,将前述事件、鼠标键盘输入事件命令类型、上述插件容器子系统标识pcid,插件对象标识pid封装成数据包p50。步骤二,数据包路由:所述网络模块采用web socket通信方式,将数据包p50发送给所述浏览器插件服务子系统。所述web服务模块解析数据包p50,根据鼠标键盘输入事件命令类型,将数据包p50转发给所述插件容器管理模块。所述插件容器管理模块解析数据包p50,获取插件容器子系统标识pcid,通过插件容器子系统标识pcid,获取对应所述浏览器插件容器子系统,将数据包p50通过所述i/o通信模块,发送给所述浏览器插件容器子系统的所述插件容器i/o通信模块。步骤三,模拟鼠标键盘输入事件:所述插件容器i/o通信模块解析数据包p50后,根据鼠标键盘输入事件命令类型,调用所述鼠标键盘模拟模块将鼠标键盘输入事件转成插件的鼠标键盘事件,驱动给插件界面。至此,插件界面就可以响应鼠标键盘输入事件。优选地,在windows系统下,鼠标键盘模拟器在处理鼠标事件时,首先将坐标映射成虚拟桌面坐标pt1,通过桌面坐标pt1,获取当前操作窗口win1;然后在通过坐标pt1,向窗口win1,发送wm_nchittest消息,获取坐标pt1,在窗口win1具体部位,如客户区域、标题栏、滚动条。根据坐标pt1所在部位,将鼠标输入事件,映射成对应的window窗口消息;如鼠标左键单击事件,在客户区域时转换成wm_lbuttondwon事件;在标题栏区域时转化成wm_nclbuttondwon事件;在滚动条时转化成wm_vscroll或wm_hscroll事件。优选地,在windows系统下,鼠标键盘模拟器在键盘输入事件时,应将事件转换成wm_keydown、wm_syskeydown、wm_keyup、wm_syskeyup窗口消息,文本输入时,应将键盘输入事件转换成wm_char窗口消息。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献