一种跨平台的浏览器外设调用方法与流程

文档序号:19155031发布日期:2019-11-16 00:37阅读:981来源:国知局
一种跨平台的浏览器外设调用方法与流程

本发明涉及计算机软件技术领域,具体的说,是一种跨平台的浏览器外设调用方法。



背景技术:

activex插件是用于互联网的很小的程序,有时称为插件程序。它们会允许播放动画,或帮助执行任务,如在microsoftupdate安装安全更新。如图1为activex插件在浏览器中的实现:当浏览器需要加载一个activex插件时,会自动检查其是否存在,然后在页面上的相应位置插入activex插件的webui。用户在使用webui或其他方式与插件进行交互是通过com接口来进行通信。厂商一般仅能提供用于ie浏览器的activex插件,不能实现跨平台调用。厂商提供的activex插件仅用于与各自的外设进行数据交换及设备控制。以下,为了方便称为厂商外设工具包。目前的activex插件,仅能运行于ie浏览器及windows环境下,无法满足跨平台的需求。activex插件厂商选择不一致,导致其调用方式也不完全一致,会严重增加开发者的开发及调试工作量。



技术实现要素:

本发明的目的在于提供一种跨平台的浏览器外设调用方法,用于解决现有技术中目前的activex插件,仅能运行于ie浏览器及windows环境下,无法满足跨平台的需求的问题。

本发明通过下述技术方案解决上述问题:

一种跨平台的浏览器外设调用方法,包括:

步骤s100:创建浏览器页面时,建立浏览器页面js对象与浏览器进程内部的对象的映射关系;

步骤s200:浏览器页面检测到用户操作时,由js引擎自动解释执行javascript代码,浏览器页面运行调用外设的javascript代码时,浏览器进程内部的对象通过js桥对外部设备的api进行调用,外部设备的api返回的数据依次通过js桥、js引擎返回浏览器页面。

用户在浏览器网页上进行相应操作时,js引擎会自动解释执行js代码,并且调用js对象映射的其他语言的对象,如a对象,然后a对象会通过js桥对外部设备的api进行调用,此时,数据从用户浏览器网页通过js引擎流向js桥,然后通过发射机制流向外部设备,数据返回到浏览器页面遵从这一过程的逆过程。

js桥作为前端浏览器页面javascript和浏览器扩展、外部设备api之间的桥梁,用来扩展浏览器功能的接口,浏览器扩展用来解析调用外设api,这个浏览器扩展被实现为与外设无关、可以调用任何外设的任何api。通过对厂商外部设备的api的描述/封装,通过代码反射实现对厂商api的调用,可以屏蔽不同厂商之间的api名称不同的情况。在js代码中仅需要传入厂商信息、需要调用的api(描述文件)名称以及传入的必要参数等,即可简单的实现对外设的信息获取等操作。由于只需要对厂商的api进行描述,降低了开发者的入门门槛,同时也可以减少大量的针对各个不同厂商的api专门封装操作。

进一步地,所述步骤s200中浏览器进程内部的对象通过js桥对外部设备的api进行调用具体包括:

a:浏览器进程内部的对象自动调用预先注册在js桥中的对象,js桥中的对象加载并调用浏览器扩展,所述浏览器扩展为通过浏览器扩展api实现的自动装载的插入式功能;

b:浏览器扩展接收到浏览器页面javascript代码传入的参数,解析这些参数信息后,在外部设备的描述文件中寻找对应的外部设备的api;

c:浏览器扩展通过代码反射将参数信息传入对应的外部设备的api,等待外设api完成并返回数据。代码反射,即运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性。

进一步地,所述浏览器进程内部的对象为c++对象,c++对象与所述浏览器页面js对象的映射通过浏览器的cfe内核提供的js对象转换机制实现。

本发明与现有技术相比,具有以下优点及有益效果:

(1)本发明通过对厂商api的描述/封装,通过代码反射实现对厂商api的调用,可以屏蔽不同厂商之间的api名称不同的情况。在js代码中仅需要传入厂商信息、需要调用的api(描述文件)名称以及传入的必要参数等,即可简单的实现对外设的信息获取等操作。由于只需要对厂商的api进行描述,降低了开发者的入门门槛,同时也可以减少大量的针对各个不同厂商的api专门封装操作。

附图说明

图1为现有技术中activex插件在浏览器中的实现原理图;

图2为本发明的原理框图。

具体实施方式

下面结合实施例对本发明作进一步地详细说明,但本发明的实施方式不限于此。

实施例1:

结合附图2所示,一种跨平台的浏览器外设调用方法,包括:

步骤s100:创建浏览器页面时,建立浏览器页面js对象与浏览器进程内部的对象的一一映射关系,此映射关系应该在浏览器页面创建时进行设置,且在浏览器页面的整个生命周期内不应该发生变化;

步骤s200:浏览器页面检测到用户操作时,由js引擎自动解释执行javascript代码,浏览器页面运行调用外设的javascript代码时,浏览器进程内部的对象通过js桥对厂商提供的外部设备的api(即厂商提供的仅用于与各自的外设(例如打印机、读卡器等外部设备简称外设)进行数据交换及设备控制的activex插件,简称厂商提供的外设工具包)进行调用:

a:浏览器进程内部的对象自动调用预先注册在js桥中的对象,js桥中的对象加载并调用浏览器扩展,所述浏览器扩展为通过浏览器扩展api实现的自动装载的插入式功能;

b:浏览器扩展接收到浏览器页面javascript代码传入的参数,解析这些参数信息后,在外部设备的描述文件中寻找对应的外部设备的api;浏览器扩展在调用厂商外部设备的api时,需要厂商外部设备的描述文件以确定其api特有名称(即可以唯一识别的名称)等。

c:浏览器扩展通过代码反射将参数信息传入对应的外部设备的api,等待外设api完成并返回数据。

外部设备的api返回的数据依次通过js桥、js引擎返回浏览器页面。

用户在浏览器网页上进行相应操作时,js引擎会自动解释执行js代码,并且调用js对象映射的其他语言的对象,如a对象,然后a对象会通过js桥对外部设备的api进行调用,此时,数据从用户浏览器网页通过js引擎流向js桥,然后通过发射机制流向外部设备,数据返回到浏览器页面遵从这一过程的逆过程。

具体的:

1.从浏览器页面->js引擎:这一步是浏览器内核将javascript(js)代码进行解释执行的步骤;

2.js引擎->js桥:通过cfe提供的js对象转换机制,将js对象与浏览器内存中的c++对象进行了一次映射,此时调用js对象的方法即等同于调用c++对象;cfe(commonfirmwareenvironment)为引导内核启动的程序;

3.js桥->浏览器扩展:js桥会自动调用浏览器扩展(浏览器扩展即浏览器扩展功能,其不是浏览器所必需的,而是通过浏览器扩展api实现的可自动装载的插入式功能),浏览器扩展会自动调用厂商外部设备的api进行数据交换。浏览器扩展可以通过实现代码反射来实现代码与厂商无关。

尽管这里参照本发明的解释性实施例对本发明进行了描述,上述实施例仅为本发明较佳的实施方式,本发明的实施方式并不受上述实施例的限制,应该理解,本领域技术人员可以设计出很多其他的修改和实施方式,这些修改和实施方式将落在本申请公开的原则范围和精神之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1