一种支持多种浏览器内核的html信息录入方法与流程

文档序号:12719994阅读:695来源:国知局

本发明属于信息录入技术领域,特别地涉及一种支持多种浏览器内核的html信息录入方法。



背景技术:

由于信息技术的快速发展,将外部信息录入计算机系统的方法越来越便捷,通过外部硬件,可以快速将条形码、二维码等信息录入计算机系统。而随着信息管理软件逐步由传统的C/S结构向B/S结构转变,越来越多的信息录入在网页上实现,这种方式的转变一方面极大减轻了软件实施方的安装、维护工作量,同时一定程度地降低了对客户端的设备要求。目前,在html页面中直接录入外部信息的方法主要为在html中内嵌插件。该方法需要开发该网页专用的浏览器插件,并在html中引用。当浏览器打开特定的、需要录入外部信息的html页面时,加载插件。这种方法利用插件作为本地应用的属性,可以执行html所不能完成的工作,例如读写系统中的文件,使用硬件资源等。但是,html内嵌插件的方法具有极高的设计耦合性,其要求在设计html页面的时候,同时考虑与之相关的插件,提高设计过程的复杂程度。另外,对于历史遗留网站,如果不重新设计架构,则必须沿用人工录入的办法,无法实现线上直接进行信息录入;而重新设计部署的成本往往是巨大的。



技术实现要素:

为解决上述问题,本发明的目的在于提供一种支持多种浏览器内核的html信息录入方法,无需下载插件,不改动原有系统,就可以直接从本地硬件中采集信息并录入网站,大大提高录入的速度和准确性。

为实现上述目的,本发明的技术方案为:

一种支持多种浏览器内核的html信息录入方法,包括以下步骤:

S1.信息获取,外置硬件获取信息;

S2.信息传输,浏览器插件调取外置硬件获取的信息;

S3.信息生成,将信息生成为浏览器html文档,通过javascript脚本自动生成html表单。

S1.信息获取中,根据不同的信息介质,选择不同的硬件,不作为本方法的要点,例如身份证信息,可以外接第三方身份证阅读硬件,例如二维码信息,可以外接摄像头拍射二维码图片并解析。本地c++应用程序使用结构体保存外置硬件获取到的信息。从而将信息保存到本地硬件。

进一步的,S1还包括以下步骤:外置硬件获取到的信息保存到本地C++应用程序。S2中的浏览器中插件为BHO插件或npapi插件。

进一步的,S2中的信息传输采用windows共享内存机制。

S2信息传输包括以下子步骤:

S21.定义一个本地C++应用程序与BHO插件或npapi插件共用的结构体;

S22.采用windows共享内存机制,将定义的结构体存入共享内存;

S23.本地C++应用程序与浏览器插件按照一定规则读写结构体内的数据。

其中,S23所述的规则为:

本地C++应用程序激活互斥锁,创建或写共享内存,而后解锁互斥锁,生成信号量;

浏览器插件等待本地C++应用程序给出的信号量,并在接收信号量后激活互斥锁,读共享内存,进而解锁互斥锁。

根据此规则完成读写过程后,信息就已经到达BHO或者npapi插件,并储存于插件的结构体中。

进一步的,S3中,对于IE浏览器和非IE浏览器执行javascript脚本的方法有所不同。

对于IE浏览器,可以通过BHO技术。BHO插件是针对IE浏览器的插件,BHO插件是一种com组件,实现了IObjectWithSite接口。并需要根据浏览器是32位还是64位,到注册表\\HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects 注册BHO插件的guid。

因此,IE浏览器执行javascript脚本的方法为:

IE浏览器通过BHO插件生成html表单,具体方法为:

通过BHO插件监听浏览器的文档加载完毕事件;判断该信息文档是否是目标html文档,如果是,则构造并执行javascript脚本,将信息生成到html表单中。

而对于非IE内核浏览器,可以通过npapi技术。npapi插件即网景插件应用程序编程接口,是遵循网景通信公司(Netscape Communications Corporation)所制定规范的一组单纯的 C Plugin应用程序接口,主要针对非IE浏览器。2004年底时,各家浏览器公司(IE, Opera, Mozilla 等) 都同意支援NPRuntime延伸 API(应用程序编程接口)以支援Scriptability,所以目前需要以NPRuntime API为基础,才能使Plugin跨越各种浏览器。

将包含npapi插件的扩展安装到浏览器上,当浏览器启动后,会在默认的plugins文件夹中加载npapi插件,并读取插件的MimeType属性,保存到浏览器内部。插件初始化时,浏览器通过NP_Initialize接口将自己的接口传递给npapi插件,npapi插件通过NP_GetEntryPoints接口将自身接口传递给浏览器,从而达到双方互调的目的。

进而,非IE内核浏览器执行javascript脚本的方法为:

通过npapi插件生成html表单,具体方法为:

浏览器扩展引用npapi插件,启动npapi插件中一个类的实例,使用该实例在浏览器上执行javascript脚本,将信息生成到html表单中。

进一步的,S3还包括以下步骤:javascript脚本找到目标html文档的目标element,将插件中的信息字段对目标element赋值,实现信息到html页面的填充。

本发明的有益效果是:

(1)本方法无需在设计html页面时,特殊设计对应的插件;

(2)本方法具有网站无关性,对于任意需要录入信息的网站,都可以使用本方法从本地硬件采集信息,录入网站。不需要改动原有系统,可大大提高信息录入的速度和准确性。

附图说明

图1为本发明实施例中的html信息录入流程图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。

相反,本发明涵盖任何由权利要求定义的在本发明的精髓和范围上做的替代、修改、等效方法以及方案。进一步,为了使公众对本发明有更好的了解,在下文对本发明的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本发明。

本发明实施例的html信息录入方法流程如图 1 所示。

一种支持多种浏览器内核的html信息录入方法,包括以下步骤:

S1.信息获取,外置硬件获取信息;

S2.信息传输,将获取的信息传输到BHO或npapi浏览器插件;

S3.信息生成,将信息生成为浏览器html文档,通过javascript脚本自动生成html表单。

其中,S1.信息获取采用外接硬件的方式,从硬件驱动中按照驱动SDK,获取信息。本地c++应用程序使用结构体保存外置硬件获取到的信息的步骤。从而将信息保存到本地硬件。

外置硬件不作为本方法的要点,可以根据不同的信息介质,选择不同的硬件。例如身份证信息,可以外接第三方身份证阅读硬件;二维码信息,则可以外接摄像头拍射二维码图片并解析。

其中,S2信息传输采用windows共享内存机制。具体的,S2包括以下子步骤:

S21.定义一个本地C++应用程序与BHO插件或npapi插件共用的结构体;

S22.采用windows共享内存机制,将定义的结构体存入共享内存;

S23.本地C++应用程序与浏览器插件按照一定规则读写结构体内的数据。

S23中使用的规则为:

本地C++应用程序激活互斥锁,创建或写共享内存,而后解锁互斥锁,生成信号量;

浏览器插件等待本地C++应用程序给出的信号量,并在接收信号量后激活互斥锁,读共享内存,进而解锁互斥锁。

采用windows内核对象,共享内存,进行不同进程间数据的传送,因为是进程间共享内存,使用windows mutex跨进程同步对共享内存的读写。最后,使用windows 信号量Semaphore进行不同进程之间的通知。根据前述规则完成读写过程后,信息就已经到达BHO或者npapi插件,并储存于插件的结构体中。这里所使用的Windows Api包括:CreateMutex,OpenMutex,WaitForSingleObject,CreateSemaphore,OpenSemaphore,ReleaseSemaphore,CreateFileMapping,OpenFileMapping,MapViewOfFile

S3中,对于IE浏览器和非IE浏览器执行javascript脚本的方法有所不同。

对于IE浏览器,可以通过BHO技术。BHO插件是针对IE浏览器的插件,BHO插件是一种com组件,实现了IObjectWithSite接口。并需要根据浏览器是32位还是64位,到注册表\\HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects 注册BHO插件的guid。

因此,IE浏览器执行javascript脚本的方法为:

通过BHO插件在实现IObjectWithSite接口的SetSite方法时,监听浏览器的文档加载完毕事件,事件id: DISPID_DOCUMENTCOMPLETE.在该事件发生时判断文档是否是目标html文档,如果是,则获取该文档的IHTMLWindow2接口,调用该接口的eval方法,构造并执行javascript脚本。

对于非IE内核浏览器,可以通过npapi技术。npapi插件即网景插件应用程序编程接口,是遵循网景通信公司(Netscape Communications Corporation)所制定规范的一组单纯的 C Plugin应用程序接口,主要针对非IE浏览器。

npapi需要通过浏览器扩展,将包含npapi插件的扩展安装到浏览器上,在浏览器扩展的background html页面中引用该插件,当浏览器启动后,会在默认的plugins文件夹中加载npapi插件,并读取插件的MimeType属性,保存到浏览器内部,实现插件常驻浏览器中。而npapi插件初始化时,浏览器通过NP_Initialize接口将自己的接口传递给npapi插件,npapi插件通过NP_GetEntryPoints接口将自身接口传递给浏览器,从而达到浏览器与npapi插件交换API的目的。2004年底时,各家浏览器公司(IE, Opera, Mozilla 等) 都同意支援NPRuntime延伸 API以支援Scriptability,所以目前需要以NPRuntime API为基础,才能使Plugin跨越各种浏览器。

进而,npapi插件执行javascript脚本的方法为:

浏览器扩展通过在background html中引用npapi插件,启动npapi插件中一个类的实例,使用该实例调用浏览器的NPN_InvokeDefault方法,从而在浏览器上执行扩展javascript脚本。

S3还包括以下步骤:javascript脚本找到目标html文档的目标element,将插件中的信息字段对目标element赋值,实现信息到html页面的填充。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

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