发明内容
本发明实施例的目的在于提供一种UI组件探测方法、装置、设备及存储介质,用以实现兼容探测低代码开发平台中各种类型的UI组件的技术效果。
第一方面,本发明实施例提供一种UI组件探测方法,包括:
在全局文件对象上监听所有鼠标事件,当监听到任一所述鼠标事件时,获取当前元素;
在所述在全局文件对象上监听所有鼠标事件之前,还包括:
对于每一UI组件,当低代码开发平台渲染所述UI组件对应的元素时,在所述UI组件对应的元素的属性中添加一个唯一的组件标识码;
从所述当前元素和所述当前元素的所有祖先元素中查询出具有组件标识码的元素,得到目标元素;
根据所述目标元素的组件标识码,探测所述低代码开发平台中的所有所述UI组件,得到目标UI组件。
在上述实现过程中,通过直接在全局文件对象上监听所有鼠标事件,在监听到任一鼠标事件时,从该鼠标事件对应的当前元素及当前元素的所有祖先元素中查询出目标元素,基于目标元素的组件标识码探测低代码开发平台中的所有UI组件,得到目标UI组件,无需改变低代码开发平台中UI组件原有的结构和样式即可进行UI组件探测,能够有效避免出现UI组件原有的结构和样式被破坏、部分UI组件不能被选中等异常情况,从而实现兼容探测低代码开发平台中各种类型的UI组件的技术效果。
进一步地,在所述在全局文件对象上监听所有鼠标事件之前,还包括:
对于每一所述UI组件,当所述低代码开发平台渲染所述UI组件对应的元素时,在所述UI组件对应的元素的属性中添加一个渲染标记符。
在上述实现过程中,通过在低代码开发平台渲染好的各个元素的属性中添加一个唯一的组件标识码和一个渲染标记符,能够保证后续进行UI组件探测时,可利用渲染好的各个元素的唯一组件标识码和渲染标记符快速准确地查询出目标元素,从而实现快速准确地探测低代码开发平台中各种类型的UI组件的技术效果。
进一步地,所述从所述当前元素和所述当前元素的所有祖先元素中查询出具有组件标识码的元素,得到目标元素,具体包括:
判断所述当前元素的属性中是否有渲染标记符;
当所述当前元素的属性中没有渲染标记符时,将所述当前元素更新为所述当前元素的父级元素,重新判断所述当前元素的属性中是否有渲染标记符,直至遍历完所述目标元素和所述当前元素的所有祖先元素;
当所述当前元素的属性中有渲染标记符时,继续判断所述当前元素的属性中是否有组件标识码;
若所述当前元素的属性中没有组件标识码,则将所述当前元素更新为所述当前元素的父级元素,重新判断所述当前元素的属性中是否有组件标识码,直至遍历完所述当前元素和所述当前元素的所有祖先元素;
若所述当前元素的属性中有组件标识码,则确定所述当前元素为所述目标元素。
在上述实现过程中,通过利用渲染好的各个元素的唯一组件标识码和渲染标记符从当前元素和当前元素的所有祖先元素中向上查询出目标元素,能够快速准确地查询出目标元素,从而实现快速准确地探测低代码开发平台中各种类型的UI组件的技术效果。
进一步地,所述从所述当前元素和所述当前元素的所有祖先元素中查询出具有组件标识码的元素,得到目标元素,具体还包括:
当所述当前元素和所述当前元素的所有祖先元素的属性中均没有渲染标记符,或者所述当前元素和所述当前元素的所有祖先元素均没有所述组件标识码时,发送所述鼠标事件不对应任一所述UI组件的提示信息。
在上述实现过程中,通过在当前元素和当前元素的所有祖先元素的属性中均没有渲染标记符,或者当前元素和当前元素的所有祖先元素均没有组件标识码时,发送鼠标事件不对应任一UI组件的提示信息,能够提示用户鼠标操作UI组件失败,有利于用户及时做出应对措施。
进一步地,所述根据所述目标元素的组件标识码,探测低代码开发平台中的所有UI组件,得到目标UI组件,具体包括:
获取所有所述UI组件的标识码,将标识码与所述目标元素的组件标识码相同的UI组件作为所述目标UI组件。
在上述实现过程中,通过分别将低代码开发平台中每一UI组件的标识码与目标元素的标识码进行对比,根据对比结果确定目标UI组件,能够面向低代码开发平台中的所有UI组件定位出目标UI组件,从而实现准确探测低代码开发平台中各种类型的UI组件。
进一步地,所有所述鼠标事件包括鼠标按下时持续触发事件、鼠标按下触发事件;所述UI组件为React组件。
在上述实现过程中,通过选择鼠标按下时持续触发事件、鼠标按下触发事件等作为所有鼠标事件,选择React组件作为UI组件,能够很好地适应低代码开发平台的应用范围,从而实现更好地兼容探测低代码开发平台中各种类型的UI组件的技术效果。
第二方面,本发明实施例提供一种UI组件探测装置,包括:
鼠标事件监听模块,用于在全局文件对象上监听所有鼠标事件,当监听到任一所述鼠标事件时,获取当前元素;
组件元素渲染模块,用于在所述在全局文件对象上监听所有鼠标事件之前,对于每一UI组件,当低代码开发平台渲染所述UI组件对应的元素时,在所述UI组件对应的元素的属性中添加一个唯一的组件标识码;
目标元素查询模块,用于从所述当前元素和所述当前元素的所有祖先元素中查询出具有组件标识码的元素,得到目标元素;
UI组件探测模块,用于根据所述目标元素的组件标识码,探测所述低代码开发平台中的所有所述UI组件,得到目标UI组件。
进一步地,所述组件元素渲染模块,还用于在所述在全局文件对象上监听所有鼠标事件之前,对于每一所述UI组件,当所述低代码开发平台渲染所述UI组件对应的元素时,在所述UI组件对应的元素的属性中添加一个渲染标记符。
第三方面,本发明实施例提供一种电子设备,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序;所述存储器与所述处理器耦接,且所述处理器执行所述计算机程序时实现如上所述的UI组件探测方法。
第四方面,本发明实施例提供一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括存储的计算机程序;其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行如上所述的UI组件探测方法。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述。
应注意到:在本发明的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。同时,文中的步骤编号,仅为了方便本发明实施例的解释,不作为限定步骤执行先后顺序的作用。本发明实施例提供的方法可以由相关的终端设备执行,且下文均以处理器作为执行主体为例进行说明。
请参看图1,图1为本发明第一实施例提供的一种UI组件探测方法的流程示意图。本发明第一实施例提供一种UI组件探测方法,包括步骤S101~S103:
S101、在全局文件对象上监听所有鼠标事件,当监听到任一鼠标事件时,获取当前元素;
S102、从当前元素和当前元素的所有祖先元素中查询出具有组件标识码的元素,得到目标元素;
S103、根据目标元素的组件标识码,探测低代码开发平台中的所有UI组件,得到目标UI组件。
作为示例性地,在步骤S101中,在全局文件对象上注册鼠标按下时持续触发事件onmousemove、鼠标按下触发事件onmousedown等鼠标事件,实时在全局文件对象上监听所有鼠标事件,当监听到任一鼠标事件时,获取此时鼠标指示的页面元素,得到当前元素。
在步骤S102中,获取当前元素和当前元素的所有祖先元素,其中,当前元素的祖先元素包括当前元素的父级元素、当前元素的父级元素的父级元素等。从当前元素和当前元素的所有祖先元素中查询出具有组件标识码nodeID的元素,将查询出的元素作为目标元素。
在步骤S103中,获取目标元素的组件标识码,根据目标元素的组件标识码,从低代码开发平台中的所有UI组件定位出目标UI组件,完成UI组件探测。
本发明实施例通过直接在全局文件对象上监听所有鼠标事件,在监听到任一鼠标事件时,从该鼠标事件对应的当前元素及当前元素的所有祖先元素中查询出目标元素,基于目标元素的组件标识码探测低代码开发平台中的所有UI组件,得到目标UI组件,无需改变低代码开发平台中UI组件原有的结构和样式即可进行UI组件探测,能够有效避免出现UI组件原有的结构和样式被破坏、部分UI组件不能被选中等异常情况,从而实现兼容探测低代码开发平台中各种类型的UI组件的技术效果。
请参看图2,图2为本发明第一实施例中一可选实施例提供的一种UI组件探测方法的流程示意图。在可选的实施例当中,所述UI组件探测方法,还包括步骤S104:
S104、在所述在全局文件对象上监听所有鼠标事件之前,对于每一UI组件,当低代码开发平台渲染UI组件对应的元素时,在UI组件对应的元素的属性中添加一个唯一的组件标识码和一个渲染标记符。
作为示例性地,在进行UI组件探测之前,需要在低代码开发平台渲染其内部任一UI组件对应的元素时,在该UI组件对应的元素的属性中添加一个唯一的组件标识码nodeID和一个渲染标记符。其中,不同UI组件对应的元素的属性中的渲染标记符可以是相同的也可以是不同的。
本发明实施例通过在低代码开发平台渲染好的各个元素的属性中添加一个唯一的组件标识码和一个渲染标记符,能够保证后续进行UI组件探测时,可利用渲染好的各个元素的唯一组件标识码和渲染标记符快速准确地查询出目标元素,从而实现快速准确地探测低代码开发平台中各种类型的UI组件的技术效果。
在可选的实施例当中,所述从当前元素和当前元素的所有祖先元素中查询出具有组件标识码的元素,得到目标元素,具体包括:判断当前元素的属性中是否有渲染标记符;当当前元素的属性中没有渲染标记符时,将当前元素更新为当前元素的父级元素,重新判断当前元素的属性中是否有渲染标记符,直至遍历完目标元素和当前元素的所有祖先元素;当当前元素的属性中有渲染标记符时,继续判断当前元素的属性中是否有组件标识码;若当前元素的属性中没有组件标识码,则将当前元素更新为当前元素的父级元素,重新判断当前元素的属性中是否有组件标识码,直至遍历完当前元素和当前元素的所有祖先元素;若当前元素的属性中有组件标识码,则确定当前元素为目标元素。
作为示例性地,获取当前元素和当前元素的所有祖先元素,例如,在监听到任一鼠标事件时获取的当前元素为E1,E1的祖先元素仅包括其父级元素E2、其父级元素的父级元素E3。从E1、E2、E3中向上查询出具有组件标识码nodeID的元素,将查询出的元素作为目标元素,具体操作过程包括:
1、判断E1的属性中是否有渲染标记符;
2、当E1的属性中没有渲染标记符时,认为E1未被低代码开发平台渲染,将当前元素更新为E1的父级元素E2,重新判断E2的属性中是否有渲染标记符;
2.1、若E2的属性中没有渲染标记符,认为E2未被低代码开发平台渲染,则将当前元素更新为E2的父级元素E3,重新判断E3的属性中是否有渲染标记符;
2.1.1、若E3的属性中没有渲染标记符,由于此时已遍历完E1、E2、E3,认为E1、E2、E3均未被低代码开发平台渲染,则停止进行UI组件探测;
2.1.2、若E3的属性中有渲染标记符,认为E3已被低代码开发平台渲染,则可继续判断E3的属性中是否有组件标识码nodeID,并在判定E3的属性中没有组件标识码nodeID时停止进行UI组件探测,在判定E3的属性中有组件标识码nodeID时直接将E3确定为目标元素;
2.2、若E2的属性中有渲染标记符,认为E2已被低代码开发平台渲染,则可继续判断当前元素的属性中是否有组件标识码nodeID;
2.2.1、若E2的属性中没有组件标识码nodeID,则将当前元素更新为E2的父级元素E3,重新判断E3的属性中是否有组件标识码nodeID;
2.2.1.1、若E3的属性中没有组件标识码nodeID,由于此时已遍历完E1、E2、E3,认为E1、E2、E3均未被低代码开发平台渲染且赋予唯一的组件标识码nodeID,则停止进行UI组件探测;
2.2.1.2、若E3的属性中有组件标识码nodeID,则可直接将E3确定为目标元素;
3、当E1的属性中有渲染标记符时,认为E1已被低代码开发平台渲染,继续判断E1的属性中是否有组件标识码nodeID;
3.1、若E1的属性中没有组件标识码nodeID,则将当前元素更新为E1的父级元素E2,重新判断E2的属性中是否有组件标识码nodeID;
3.1.1、若E2的属性中没有组件标识码nodeID,则将当前元素更新为E2的父级元素E3,重新判断E3的属性中是否有组件标识码nodeID;
3.1.1.1、若E3的属性中没有组件标识码nodeID,由于此时已遍历完E1、E2、E3,认为E1、E2、E3均未被低代码开发平台渲染且赋予唯一的组件标识码nodeID,则停止进行UI组件探测;
3.1.1.2、若E3的属性中有组件标识码nodeID,则可直接将E3确定为目标元素;
3.1.2、若E2的属性中有组件标识码nodeID,则可直接将E2确定为目标元素。
本发明实施例通过利用渲染好的各个元素的唯一组件标识码和渲染标记符从当前元素和当前元素的所有祖先元素中向上查询出目标元素,能够快速准确地查询出目标元素,从而实现快速准确地探测低代码开发平台中各种类型的UI组件的技术效果。
在可选的实施例当中,所述从当前元素和当前元素的所有祖先元素中查询出具有组件标识码的元素,得到目标元素,具体还包括:当当前元素和当前元素的所有祖先元素的属性中均没有渲染标记符,或者当前元素和当前元素的所有祖先元素均没有组件标识码时,发送鼠标事件不对应任一UI组件的提示信息。
作为示例性地,获取当前元素和当前元素的所有祖先元素,例如,在监听到任一鼠标事件时获取的当前元素为E1,E1的祖先元素仅包括其父级元素E2、其父级元素的父级元素E3。从E1、E2、E3中向上查询出具有组件标识码nodeID的元素,将查询出的元素作为目标元素,具体操作过程还包括:
2.1.1、若E3的属性中没有渲染标记符,由于此时已遍历完E1、E2、E3,认为E1、E2、E3均未被低代码开发平台渲染,则停止进行UI组件探测,发送鼠标事件不对应任一UI组件的提示信息;
3.1.1.1、若E3的属性中没有组件标识码nodeID,由于此时已遍历完E1、E2、E3,认为E1、E2、E3均未被低代码开发平台渲染且赋予唯一的组件标识码nodeID,则停止进行UI组件探测,发送鼠标事件不对应任一UI组件的提示信息。
本发明实施例通过在当前元素和当前元素的所有祖先元素的属性中均没有渲染标记符,或者当前元素和当前元素的所有祖先元素均没有组件标识码时,发送鼠标事件不对应任一UI组件的提示信息,能够提示用户鼠标操作UI组件失败,有利于用户及时做出应对措施。
在可选的实施例当中,所述根据目标元素的组件标识码,探测低代码开发平台中的所有UI组件,得到目标UI组件,具体包括:获取所有UI组件的标识码,将标识码与目标元素的组件标识码相同的UI组件作为目标UI组件。
作为示例性地,在查询出目标元素后,获取目标元素的组件标识码nodeID,以及获取低代码开发平台中所有UI组件的标识码,分别将每一UI组件的标识码与目标元素的组件标识码nodeID进行对比,若有一UI组件的标识码与目标元素的组件标识码nodeID相同,则认为该UI组件对应的元素为目标元素,将该UI组件作为目标UI组件。
本发明实施例通过分别将低代码开发平台中每一UI组件的标识码与目标元素的标识码进行对比,根据对比结果确定目标UI组件,能够面向低代码开发平台中的所有UI组件定位出目标UI组件,从而实现准确探测低代码开发平台中各种类型的UI组件。
在可选的实施例当中,所有鼠标事件包括鼠标按下时持续触发事件、鼠标按下触发事件;UI组件为React组件。
可以理解的是,鼠标按下时持续触发事件onmousemove、鼠标按下触发事件onmousedown等均是低代码开发平台中常见的用户交互操作。React是一个用于构建用户界面的JavaScript库,是主流的UI框架。
本发明实施例通过选择鼠标按下时持续触发事件、鼠标按下触发事件等作为所有鼠标事件,选择React组件作为UI组件,能够很好地适应低代码开发平台的应用范围,从而实现更好地兼容探测低代码开发平台中各种类型的UI组件的技术效果。
请参看图3,图3为本发明第一实施例中一示例提供的一种UI组件探测方法的数据流图。为了更清楚地说明本发明第一实施例提供的一种UI组件探测方法,作为示例性地,应用本发明第一实施例所述的UI组件探测方法进行UI组件探测,应用过程具体包括:
1、在低代码开发平台里,每个React组件都有一个唯一的标识码ID,我们可以根据这个标识码ID找到唯一的对应的React组件;
2、在低代码开发平台渲染每个React组件对应的页面元素时,给每个React组件对应的页面元素的props上增加一个属性nodeID,这个组件标识码nodeID与该页面元素对应的React组件的标识码ID相同;
3、在全局document对象上注册并监听所有鼠标事件,比如鼠标按下时持续触发事件onmousemove、鼠标按下触发事件onmousedown;
4、当任一鼠标事件触发时,可以通过e.target 拿到当前element元素,查询当前element元素的属性上有没有渲染标记符,比如reactFiber的引用(一个以reactFiber$开头的属性,React会在自己渲染的element上加上),如果没有的话,就查询当前element元素的parent元素,一直向上查询,直到查询到第一个有reactFiber引用的element元素,如果经过上述步骤,一直找到document都没有找不到任何拥有reactFiber引用的element元素,则说明当前事件不对应任何React组件,如果找到了,则进行下一步;
5、当找到了拥有reactFiber引用的element元素时,在当前fiber中查询memoizedProps,判断memoizedProps里面有没有nodeID属性,如果没有,则查询当前fiber的return对象(该fiber的父fiber节点),重复此步骤,一直向上查询,直到查询到某个fiber的memoizedProps上有nodeID这个属性,如果经过上述步骤,一直找到document都没有找不到任何拥有nodeID的element元素,则说明当前事件不对应任何React组件,如果找到了,则进行下一步;
6、此时,这个nodeID就是我们想要的在低代码开发平台中的React组件的ID,我们可以通过这个ID定位到对应的React组件。
请参看图4,图4为本发明第二实施例提供的一种UI组件探测装置的结构示意图。本发明第二实施例提供一种UI组件探测装置,包括:鼠标事件监听模块201,用于在全局文件对象上监听所有鼠标事件,当监听到任一鼠标事件时,获取当前元素;目标元素查询模块202,用于从当前元素和当前元素的所有祖先元素中查询出具有组件标识码的元素,得到目标元素;UI组件探测模块203,用于根据目标元素的组件标识码,探测低代码开发平台中的所有UI组件,得到目标UI组件。
请参看图5,图5为本发明第二实施例提供的一种UI组件探测装置的结构示意图。本发明第二实施例提供一种UI组件探测装置,还包括:组件元素渲染模块204,用于在所述在全局文件对象上监听所有鼠标事件之前,对于每一UI组件,当低代码开发平台渲染UI组件对应的元素时,在UI组件对应的元素的属性中添加一个渲染标记符和一个唯一的组件标识码。
在可选的实施例当中,所述从当前元素和当前元素的所有祖先元素中查询出具有组件标识码的元素,得到目标元素,具体包括:判断当前元素的属性中是否有渲染标记符;当当前元素的属性中没有渲染标记符时,将当前元素更新为当前元素的父级元素,重新判断当前元素的属性中是否有渲染标记符,直至遍历完目标元素和当前元素的所有祖先元素;当当前元素的属性中有渲染标记符时,继续判断当前元素的属性中是否有组件标识码;若当前元素的属性中没有组件标识码,则将当前元素更新为当前元素的父级元素,重新判断当前元素的属性中是否有组件标识码,直至遍历完当前元素和当前元素的所有祖先元素;若当前元素的属性中有组件标识码,则确定当前元素为目标元素。
在可选的实施例当中,所述从当前元素和当前元素的所有祖先元素中查询出具有组件标识码的元素,得到目标元素,具体还包括:当当前元素和当前元素的所有祖先元素的属性中均没有渲染标记符,或者当前元素和当前元素的所有祖先元素均没有组件标识码时,发送鼠标事件不对应任一UI组件的提示信息。
在可选的实施例当中,所述根据目标元素的组件标识码,探测低代码开发平台中的所有UI组件,得到目标UI组件,具体包括:获取所有UI组件的标识码,将标识码与目标元素的组件标识码相同的UI组件作为目标UI组件。
在可选的实施例当中,所有鼠标事件包括鼠标按下时持续触发事件、鼠标按下触发事件;UI组件为React组件。
上述装置中各个模块的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
请参看图6,图6为本发明第三实施例提供的一种电子设备的结构示意图。本发明第三实施例提供一种电子设备30,包括处理器301、存储器302以及存储在存储器302中且被配置为由处理器301执行的计算机程序;存储器302与处理器301耦接,且处理器301执行计算机程序时实现如本发明第一实施例所述的UI组件探测方法。
其中,处理器301通过总线303从存储器302读取计算机程序并执行计算机程序时可实现如本发明第一实施例所述的UI组件探测方法包括的任意实施例的方法。
处理器301可以处理数字信号,可以包括各种计算结构。例如复杂指令集计算机结构、结构精简指令集计算机结构或者一种实行多种指令集组合的结构。在一些示例中,处理器301可以是微处理器。
存储器302可以用于存储由处理器301执行的指令或指令执行过程中相关的数据。这些指令和/或数据可以包括代码,用于实现本发明实施例描述的一个或多个模块的一些功能或者全部功能。本公开实施例的处理器301可以用于执行存储器302中的指令以实现如本发明第一实施例所述的UI组件探测方法。存储器302包括动态随机存取存储器、静态随机存取存储器、闪存、光存储器或其它本领域技术人员所熟知的存储器。
本发明第四实施例提供一种计算机可读存储介质,计算机可读存储介质包括存储的计算机程序;其中,在计算机程序运行时控制计算机可读存储介质所在设备执行如本发明第一实施例所述的UI组件探测方法,且能达到与之相同的有益效果。
综上所述,本发明实施例提供一种UI组件探测方法、装置、设备及存储介质,所述方法包括:在全局文件对象上监听所有鼠标事件,当监听到任一鼠标事件时,获取当前元素;从当前元素和当前元素的所有祖先元素中查询出具有组件标识码的元素,得到目标元素;根据目标元素的组件标识码,探测低代码开发平台中的所有UI组件,得到目标UI组件。本发明实施例通过直接在全局文件对象上监听所有鼠标事件,在监听到任一鼠标事件时,从该鼠标事件对应的当前元素及当前元素的所有祖先元素中查询出目标元素,基于目标元素的组件标识码探测低代码开发平台中的所有UI组件,得到目标UI组件,无需改变低代码开发平台中UI组件原有的结构和样式即可进行UI组件探测,能够有效避免出现UI组件原有的结构和样式被破坏、部分UI组件不能被选中等异常情况,从而实现兼容探测低代码开发平台中各种类型的UI组件的技术效果。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。