一种获取输入数据的方法和装置与流程

文档序号:12665021阅读:275来源:国知局
一种获取输入数据的方法和装置与流程

本发明涉及计算机应用技术领域,特别涉及一种获取输入数据的方法和装置。



背景技术:

目前的计算机软件或者网页普遍使用键盘、鼠标等输入设备作为输入数据的主要方式,但是针对仓库、物流等特定应用场景,输入设备还可能有条码扫描器、蓝牙电子称等,用户除了要用鼠标、键盘等对数据进行增、删、改、查之外,也需要使用条码扫描器、蓝牙电子称等进行数据的采集录入。然而,对于条码扫描器、蓝牙电子称等输入设备而言,常常会受到输入框、输入法等条件的限制,从而造成输入数据失败。

具体地,目前输入设备在输入数据时,必须采用输入框作为载体,只有在输入框上存在焦点时,才能够正确输入数据。但有很多时候,扫码过快、非正常操作等因素可能会引起焦点切换错误或丢失的情况,这就会造成输入数据失败(包括输入数据错误或者无法输入数据的情况)。

即便输入框存在焦点,在进行数据的采集录入时,也可能会因为采集的数据类型和输入法类型不匹配而造成输入数据错误。举个例子,假设条码扫描器扫描如图1a中所示的条形码时,采集到数据“mika1234”,采集的数据会录入到如图1b中所示的输入框中。但如果当前输入法是中文输入法,由于数据的采集会产生(keycode)键盘编码事件,即解析采集的数据所对应的keycode,那么“mika1”对应中文输入法的输入过程如图1c所示,输入结果为“觅咖234”如图1d所示。只有当前输入法是英文输入法时,采集到的数据对应的keycode被解析后,才能够产生正确的输入结果。



技术实现要素:

有鉴于此,本发明提供了一种获取输入数据的方法和装置,以便于降低数据输入的错误率。

具体技术方案如下:

本发明提供了一种获取输入数据的方法,该方法包括:

应用程序监听特定输入端口的输入事件;

解析输入事件对应的机器编码,存储解析得到的输入数据;

对所述输入数据执行预设的业务逻辑。

根据本发明一优选实施方式,所述应用程序包括:网页脚本JavaScript、浏览器插件或客户端插件。

根据本发明一优选实施方式,所述特定输入端口包括:非键盘输入端口。

根据本发明一优选实施方式,所述解析输入事件对应的机器编码包括:

如果监听到放开按键事件,则从所述放开按键事件的对象属性中获取机器编码。

根据本发明一优选实施方式,所述对象属性为keycode属性,所述机器编码为ASCII码。

根据本发明一优选实施方式,在确定输入数据采集结束时,执行所述对所述输入数据执行预设的业务逻辑。

根据本发明一优选实施方式,所述确定输入数据采集结束包括:

解析到指示采集结束的机器编码。

根据本发明一优选实施方式,所述指示采集结束的机器编码包括:

值为13的ASCII码。

根据本发明一优选实施方式,对所述输入数据执行预设的业务逻辑包括:

将所述输入数据显示于当前焦点所在位置;或者,

将所述输入数据显示于页面的指定位置;或者,

将所述输入数据发送给服务器,以便服务器将所述输入数据存储于数据库; 或者,

对所述输入数据进行文本编辑处理;或者,

执行与所述输入数据绑定的组件控制操作。

根据本发明一优选实施方式,所述组件控制操作包括:

定位网页或应用界面上的组件,或者,

选择网页或应用界面上的组件,或者,

触发网页或应用界面上的组件对应的功能。

本发明还提供了一种获取输入数据的装置,设置于应用程序,该装置包括:

监听单元,用于监听特定输入端口的输入事件;

解析单元,用于解析输入事件对应的机器编码;

存储单元,用于存储解析得到的输入数据;

处理单元,用于对所述输入数据执行预设的业务逻辑。

根据本发明一优选实施方式,所述应用程序包括:网页脚本JavaScript、浏览器插件或客户端插件。

根据本发明一优选实施方式,所述特定输入端口包括:非键盘输入端口。

根据本发明一优选实施方式,所述解析单元,具体用于如果所述监听单元监听到放开按键事件,则从所述放开按键事件的对象属性中获取机器编码。

根据本发明一优选实施方式,所述对象属性为keycode属性,所述机器编码为ASCII码。

根据本发明一优选实施方式,所述处理单元在确定输入数据采集结束时,执行所述对所述输入数据执行预设的业务逻辑。

根据本发明一优选实施方式,当所述解析单元解析到指示采集结束的机器编码时,所述处理单元确定输入数据采集结束。

根据本发明一优选实施方式,所述指示采集结束的机器编码包括:

值为13的ASCII码。

根据本发明一优选实施方式,所述处理单元,具体执行:

将所述输入数据显示于当前焦点所在位置;或者,

将所述输入数据显示于页面的指定位置;或者,

将所述输入数据发送给服务器,以便服务器将所述输入数据存储于数据库;或者,

对所述输入数据进行文本编辑处理;或者,

执行与所述输入数据绑定的组件控制操作。

根据本发明一优选实施方式,所述组件控制操作包括:

定位网页或应用界面上的组件,或者,

选择网页或应用界面上的组件,或者,

触发网页或应用界面上的组件对应的功能。

由以上技术方案可以看出,本发明提供的方法和装置通过应用程序对特定输入端口的输入事件监听,以及对应机器编码的解析和存储,通过预先挂接的业务逻辑对输入数据进行处理,摆脱了现有输入数据依靠输入框承载的限制,即便因数据采集频率过快或其他非正常操作引起失去焦点或焦点切换错误等情况,也不会造成输入数据失败,大大降低了错误率。

【附图说明】

图1a为一个条形码示意图;

图1b为一个网页中的输入框示意图;

图1c为采用现有数据输入方式时中文输入法对应的输入结果;

图1d为采用现有数据输入方式时英文输入法对应的输入结果;

图2为本发明实施例提供的主要方法流程图;

图3为本发明实施例提供的装置结构图。

【具体实施方式】

为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。

在计算机操作系统中,输入事件对应的机器编码解析只有在输入框存在 焦点时才会触发,在本发明实施例中,对于特定输入端口通过应用程序对输入事件进行监听和解析。其中特定输入端口可以是非键盘输入端口,可以包括但不限于:条码扫描器、蓝牙电子称等数据采集录入类输入设备的输入端口。为了方便描述,在本发明实施例中均以条码扫描器为例进行描述。

另外,本发明实施例中涉及的应用程序指的是为完成某项或多项特定任务的计算机程序,其运行于用户模式,与操作系统类程序相区别。该应用程序作为本发明所提供方法的执行主体,可以采用但不限于以下形式:JavaScript(页面脚本)、浏览器插件、客户端插件等,为了描述方便,在本发明实施例中均以JavaScript为例进行描述。

本发明实施例中所涉及的“焦点”指的是在网页或者应用界面上光标被激活的位置,用以指示哪个组件被选中,可以被操作。

图2为本发明实施例提供的主要方法流程图,如图2中所示,该方法可以包括:

在201中,页面JavaScript监听条码扫描器所对应输入端口的输入事件。

在本发明实施例中,通过页面JavaScript对条码扫描器所对应输入端口进行输入事件的监听。

为了方面对本发明的理解,首先对诸如条码扫描器等输入设备的工作原理进行简单介绍:条码扫描器扫描到的数据在输入时,会被等同于(被操作系统解释成)键盘输入,例如当条码扫描器扫描到数据1时,其对应于“1”按键的按下、按住和放开事件,扫描到的数据会以ASCII码的形式包含在输入事件的对象属性中。

因此,在本步骤中,JavaScript监听到的输入事件就会包括:按下按键(keydown)事件、按住按键(keypress)事件和放开按键(keyup)事件。这三个事件的发生顺序依次是:keydown事件、keypress事件和keyup事件。类似于对一个按键的事件发生顺序,即先按下按键、然后按住按键、最后抬起按键。

在202中,JavaScript解析输入事件对应的机器编码,存储解析得到的输 入数据。

对于上述的输入事件中均包含对象属性,其中有一个对象属性为keycode属性,获取该keycode属性的属性值,就可以得到对应的机器编码(例如ASCII码,也可以采用诸如自定义编码等其他机器编码形式),再进一步确定出机器编码对应的数据,这就是对输入事件对应机器编码的解析过程。

需要特别说明的是,在现有技术的实现方式中,操作系统同样会对输入事件进行监听,但往往一些浏览器默许事件是由keypress事件触发的,诸如将数据输入输入框(数据并不一定立即显示)、调用输入法等,并且一旦数据输入输入框失败,则丢弃输入数据。而在本发明实施例中,JavaScript对监听到的keyup事件进行解析,从keyup事件的keycode属性中获取ASCII码,对ASCII码进行解析得到输入数据。也就是说,本发明实施例中,JavaScript对输入数据的解析获取是在操作系统所涉及上述默认事件之后的。

对解析得到的输入数据,JavaScript可以依次将其存入内存中,也可以存储于本地的其他存储介质。

在203中,对输入数据执行预设的业务逻辑。

在本发明实施例中,根据业务需要,可以预先在JavaScript上挂接各种业务逻辑,JavaScript对解析得到的输入数据执行挂接的业务逻辑。其中业务逻辑并不限于将输入数据输入并显示于当前焦点所在位置(输入框中)。下面举其他几个可用的业务逻辑:

1)在物流领域,业务员会扫描大量的条形码,对于扫描到的条形码如果采用现有技术中的方式,如果扫描频率过快或者操作不当等情况造成输入框失去焦点,则扫描的数据则会被丢弃。但采用本发明实施例提供的方式,可以对输入数据挂接将输入数据输入并显示于页面指定位置的业务逻辑。这样,就可以排除输入框焦点的限制,直接将解析得到的输入数据从内存中输入页面指定位置,例如某指定的输入框。

2)对于无需在页面上显示的数据,例如商场的业务员扫描大量的条形码获取商品信息,目的是为了将商品信息录入数据库,那么可以预先对输入 数据挂接将输入数据发送给服务器的业务逻辑。这样,JavaScript通过本发明实施例中的方式将得到的输入数据从内存中发送给服务器,以便服务器将输入数据存储于数据库。这样排除了页面输入框、焦点、输入法等的限制。

3)可以预先对输入数据挂接进行文本编辑处理的业务逻辑,例如快递员在扫描大量电话号码后,由于在送货对客户进行区分时往往关心的是电话号码的后四位,那么JavaScript通过本发明实施例中的方式将得到的输入数据的后四位进行加粗或者增大字号等处理。

4)可以预先将一些字符串与组件控制操作一一绑定,当条码扫描器对包含这些字符串的条码进行扫描后,判断解析得到的输入数据是否与组件控制操作绑定,如果是,则执行与输入数据绑定的组件控制操作。其中组件控制操作可以包括但不限于:定位网页或应用界面上的组件,或者,选择网页或应用界面上的组件,或者触发网页或应用界面上组件对应的功能。

通过预先将字符串与组件控制操作绑定的方式,对于页面或应用界面上的一些用户主动事件,例如点击某个按钮、触发某个功能等,都可以通过使用条码扫描器扫描特定条码的方式实现。举一个例子,对于超市收银员而言,在对商品上条码进行扫描后,需要手动通过键盘或鼠标等点击收银应用界面上的特定功能按钮来实现结账以及打印购物小票的功能。这种用户手动在不同输入设备间切换的方式十分不便,如果预先将某字符串与结账以及打印购物小票的功能绑定,即与收银应用界面上用于结账和打印购物小票的特定功能按钮对应的功能绑定,将包含该字符串的条码贴在收银柜台上,当收银员完成商品条码的扫描后,使用条码扫描器接着扫描包含该字符串的条码,就能够触发结账和打印购物小票的功能。显然,这种方式收银员始终仅需要使用条码扫描器即可,操作更流畅方便,工作效率更高。

对于挂接的业务逻辑可以根据实际的业务需求进行灵活设置,在此不再一一穷举。

在此对于将输入数据输入并显示于当前焦点所在位置,这一情况进行着重说明。如果当前在页面上的输入框中存在焦点,那么操作系统和JavaScript 都会对输入事件进行监听,并将解析得到的输入数据输入并显示于当前焦点所在位置。但由于操作系统将输入数据输入输入框的事件是由keypress触发的,而JavaScript解析输入数据的事件是由keyup触发的,因此,JavaScript输入数据到输入框的处理一定是发生在操作系统输入数据到输入框的处理之后的,那么JavaScript的处理结果就会将操作系统的处理结果覆盖掉,对于用户而言,最终输入并显示数据至输入框当前焦点位置的是JavaScript的处理结果。那么无论操作系统是否发生输入错误或失败,则对最终结果的正确性不会产生影响。

更进一步地,对于用户使用条码扫描器连续扫描多个条码时,每扫描一个条码结束条码扫描器会产生一个指示采集结束的机器编码,该机器编码连同条码所包含输入数据的机器编码一同包含在输入事件的keycode属性中,对于JavaScript而言,如果解析到指示采集结束的机器编码,则确定本次输入数据采集结束,可以以此区分各条输入数据。

以上是对本发明所提供方法进行的详细描述,下面结合实施例对本发明所提供的装置进行详细描述。

图3为本发明实施例提供的装置结构图,该装置设置于应用程序中,该应用程序可以包括但不限于页面脚本JavaScript、浏览器插件、客户端插件等,如图3中所示,该装置可以包括:监听单元01、解析单元02、存储单元03以及处理单元04。

监听单元01负责监听特定输入端口的输入事件。其中特定输入端口可以是非键盘输入端口,可以包括但不限于:条码扫描器、蓝牙电子称等数据采集录入类输入设备的输入端口。监听到的输入事件可以包括keydown事件、keypress事件和keyup事件。

解析单元02负责解析输入事件对应的机器编码。上述的输入事件中均包含对象属性,其中有一个对象属性为keycode属性,获取该keycode属性的属性值,就可以得到对应的机器编码(例如ASCII码),再进一步确定出机器编码对应的数据,这就是对输入事件对应机器编码的解析过程。在本发 明实施例中,采用从keyup事件中获取机器编码的方式。即如果监听单元01监听到放开按键事件,则解析单元02从放开按键事件的对象属性中获取机器编码。

存储单元03负责存储解析得到的输入数据,可以依次将解析得到的输入数据存入内存中,也可以存储于本地的其他存储介质。

处理单元04负责对输入数据执行预设的业务逻辑。在本发明实施例中,可以根据业务需要预先挂接各种业务逻辑,可以具体包括但不限于:将输入数据显示于当前焦点所在位置;或者,将输入数据显示于页面的指定位置;或者,将输入数据发送给服务器,以便服务器将输入数据存储于数据库;或者,对输入数据进行文本编辑处理;或者,执行与输入数据绑定的组件控制操作。

对于执行与输入数据绑定的组件控制操作的情况,可以预先将一些字符串与组件控制操作绑定,当输入设备对包含这些字符串的条码进行采集后,处理单元04可以判断解析得到的输入数据是否与组件控制操作绑定,如果是,则执行与输入数据绑定的组件控制操作。其中组件控制操作可以包括但不限于:定位网页或应用界面上的组件,或者,选择网页或应用界面上的组件,或者触发网页或应用界面上组件对应的功能。

优选地,为了区分各输入数据,处理单元04可以在确定输入数据采集结束时,执行对输入数据执行预设的业务逻辑。其中,输入装置每完成一条输入数据的输入,可以产生一个指示采集结束的机器编码,例如值为13的ASCII码(对应键盘上的回车符按键),该机器编码连同输入数据的机器编码一同包含在输入事件的keycode属性中。当解析单元03解析到指示采集结束的机器编码时,处理单元04可以确定输入数据采集结束。

由以上描述可以看出,本发明提供的方法和装置通过应用程序对特定输入端口的输入事件监听,以及对应机器编码的解析和存储,通过预先挂接的业务逻辑对输入数据进行处理,摆脱了现有输入数据依靠输入框承载的限制,即便因数据采集频率过快或其他非正常操作引起失去焦点或焦点切换错误等情况,也不会造成输入数据失败,大大降低了错误率。另外,也无需用户使 用鼠标或其他输入设备对焦点进行校正,甚至无需去关心页面上的各类输入框,只需要了解业务流程,即先采集什么数据,再采集什么数据等,提高了用户的工作效率。

当采用本发明所提供的方法和装置对图1a中所示的条形码进行扫描并录入到如图1b中所示的输入框中时,由于输入事件的监听、解析和存储由JavaScript等应用程序执行,且解析和存储是由监听到的keyup事件触发,而操作系统中输入输入框和输入法的调用是由keypress事件触发,因此应用程序解析得到的输入数据能够将操作系统输入输入框的数据进行覆盖,使得最终输入框中的数据为扫描录入的原始输入数据,并会受到输入法类型的影响。即便采用中文输入法,最终在输入框中的输入结果为“mika1234”。

在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。

上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

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

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