一种实现前端事件代理的方法及装置与流程

文档序号:11620419阅读:284来源:国知局
导航: X技术> 最新专利> 计算;推算;计数设备的制造及其应用技术
一种实现前端事件代理的方法及装置与流程

本申请涉及计算机技术领域,尤其涉及一种实现前端事件代理的方法及装置。



背景技术:

网页,实质是一种超文本编译语言(hypertextmarkuplanguage,html)文件,其中的代码可采用javascript(后续简称为:js)脚本语言,并由相应的js库(如:jquery库)提供js脚本语言所需的各函数,以实现不同的功能。

目前,对于网页而言,用户在网页中执行的交互操作,可称为前端事件(后续简称为:事件),如:点击、拖拽、滑动等。当事件发生后,网页通过js库中提供的用于处理该事件的处理函数,对该事件做出响应。具体地,基于html及js的语言特性,网页中的对象通常分成不同的层级,如:html、body、p等层级,在传统方式中,当事件发生时,网页将确定该事件所对应的层级,相应地,在后台代码中,该层级通过属于该层级的处理函数,实现对事件的响应,可见,对于传统方式而言,针对每一层级都设置相应的处理函数,其弊端在于:在层级发生增减等动态变化的情况下,需要相应地修改代码,以增减不同层级的处理函数,较为繁琐。

现有技术中,为了减少为各层级设置处理函数,通常使用js库中提供的事件代理方法(如:由delegate函数实现的事件代理方法)。具体而言,通过事件代理方法,可仅在代码中的父层添加相应的处理函数,当事件发生时,该事件所对应的层级会将该事件向上一层(即,父层)传递,直到传递至具有处理函数的层级,并由该层级的处理函数实现对事件的响应。这样的方式对于频繁增减层级的情况较为便捷。

需要说明的是,现有技术对处理函数对事件进行响应的过程中,所使用的参数之一为:选择器(selector),js库会使用相关的方法(如:sizzle引擎)对选择器进行解析,用以确定出选择器的表达式所代表的元素,以便为该元素使用处理函数对事件进行响应。

但现有技术中的上述过程,均是在js库中实现,js库在对选择器的表达式进行解析的过程所使用的相关方法,将在相应代码的支持下才能够实现,显然,这将增加js库中的代码量,还可能涉及遍历总元素集的过程,造成对选择器的解析过程需要耗费较长的时间,进一步将会导致对网页中事件进行响应的时间。



技术实现要素:

本申请实施例提供一种实现前端事件代理的方法及装置,用以解决现有技术中对代理事件的响应效率较低的问题。

本申请实施例提供的一种实现前端事件代理的方法,包括:

当监听到网页中发生的事件后,确定与所述事件相关的各层级节点;

获取所述各层级节点的节点数据;

针对每一层级节点,根据获取到的所述节点数据,与网页脚本中预编译的设定格式的对象进行比对匹配;其中,所述设定格式的对象能够反映节点数据的对象结构;

当确定所述节点数据与所述对象相匹配时,对所述事件进行响应。

本申请实施例另提供的一种实现前端事件代理的装置,包括:

确定模块,监听到网页中的发生的事件,确定与所述事件相关的各层级节点;

获取模块,获取所述各层级节点的节点数据;

匹配模块,针对每一层级节点,根据获取到的所述节点数据,与网页脚本中预编译的设定格式的对象进行比对匹配;其中,所述设定格式的对象能够反映节点数据的对象结构;

响应模块,当确定所述节点数据与所述对象相匹配时,对所述事件进行响应。

本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:

采用将网页脚本中的选择器进行预编译的方式,可将其编译为特定格式的对象,这样一来,当事件触发后,js库中针对事件代理语句中选择器字符串的解析过程,就可以转换为对特定格式的对象的匹配过程,显然,这样的方式使得js库可以不再调用额外的解析方法,相较于现有技术而言,可提升对事件的响应速度,同时,由于js库可不需再调用额外的解析方法,也就可以起到减少js库中代码量,使得js库实现轻量化,体积更小。

附图说明

此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:

图1a为本申请实施例提供的实现前端事件代理的过程示意图;

图1b为本申请实施例提供的实现前端事件代理的场景示意图;

图2a~2h为本申请实施例提供的预编译所生成的各类json对象的示意图;

图3为本申请实施例提供的实现前端事件代理的装置结构示意图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

正如前述,当网页中的前端事件发生后,事件会以“冒泡”的方式向上层传递,当事件传递到具有处理函数的层级后,可通过该层级的处理函数实现对事件的响应,而处理函数对事件进行响应的过程中,所使用的参数之一为:选择器(selector),在现有技术的方式中,js库会对使用相关的方法(如:sizzle)对选择器进行解析,用以确定出选择器的表达式所代表的元素,以便为该元素使用处理函数对事件进行响应。

但现有技术中的上述过程,均是在js库中实现,js库在对选择器的表达式进行解析的过程所使用的相关方法,将在相应代码的支持下才能够实现,显然,这将增加js库中的代码量,并且,一旦选择器的表达式采用自定义选择符,那么,还可能涉及遍历总元素集的过程,造成对选择器的解析过程需要耗费较长的时间,进一步将会导致对网页中事件进行响应的时间。

基于此,本申请提供了一种实现前端事件代理的方法,通过将对选择器的解析过程进行预编译,能够有效减少js库中对选择器的表达式进行解析的时间,而且也减少了js库中的代码量。

本申请实施例中,网页通常通过浏览器或是相应的应用等客户端进行展示,相应的js库运行在客户端中,也就是说,可由js库作为实现前端事件代理的方法的执行主体,这里并不构成对本申请的限定。

通常,js库的语句“.on(事件,选择器,代理函数)”是一种事件的代理语句,其中,“选择器”和“事件”均以字符串的形式表达,如:在选择器的位置,字符可以为a、p等,分别表示网页中的链接、段落两个元素;在事件的位置,字符串可以为click,其表示点击事件。当然,该示例中的语句并不限于此,这里仅是为说明进行举例。

基于以上内容,下面将针对本申请实施例所提供的实现前端事件代理的方法进行具体说明:

如图1a所示,为实现前端事件代理的过程(其应用场景如图1b所示),具体包括以下步骤:

s101:当监听到网页中发生的事件后,确定与所述事件相关的各层级节点。

监听的过程可由js库中所提供的监听功能实现,在上例中,实质上是对选择器位置上的字符串进行监听,以确定事件是否触发。在实际应用中,监听功能可只设置于顶层,这是因为:由于事件触发后,会向上层“冒泡”,当事件传递到设置有监听功能的顶层后,则该事件将被监听到,这里并不构成对本申请的限定。

所述的层级节点,实质上是文档对象模型(documentobjectmodel,dom)中的dom节点(为了便于描述,后续简称为:节点)。换言之,dom可将网页后台的js源代码采用诸如树形结构的方式进行表达,在dom生成的树形结构中,树形结构的每一层级与网页js源代码中的层级相匹配,并且,每一个节点表征一种元素。

在使用事件代理的方式中,当事件触发后,会以冒泡的方式向上层的节点传递,直到传递至具有处理函数的层级后,在该层级所对应的处理函数将会对该事件进行响应。因此,在本申请实施例中,可认为,与所述事件相关的各层级节点,包括:触发事件的节点,以及该节点上传路径上的若干祖辈节点。

需要说明的是,在某些场景下,处理函数设置于顶层,那么,与所述事件相关的各层级节点,就可以包括:触发事件的节点,以及至顶层节点中的各节点。

s102:获取所述各层级节点的节点数据。

dom定义了网页中各元素的对象和属性,所述的节点数据,可认为是节点中包含的对象的属性数据。作为本申请实施例中的一种方式,节点数据可包括:元素(tag)、类(class)、元素标识(id)以及各类节点的关系(如:父子、兄弟、相邻)等对象。

另需要说明的是,选择器所表达的就是元素,所以,本申请实施例中,节点数据便可认为是选择器。

s103:针对每一层级节点,根据获取到的所述节点数据,与网页脚本中预编译的设定格式的对象进行比对匹配。

其中,预编译的设定格式的对象,能够反映不同层级节点数据所对应的对象。

考虑到现有技术中的方式js库需要对选择器进行解析,其过程中js库可能会使用相关的方法实现对选择器的解析,从而增加了耗时,故在本申请中,对网页脚本中的选择器进行预编译,将选择器转换为一种简易的语言进行表达(如:可将选择器编译为json格式的对象),那么,对于获取到的各节点的节点数据而言,js库将会使用节点数据与json对象进行比对匹配,而不再是调用额外的解析方法。

显然,经过预编译的过程,使得在事件触发时,js库可以无需再调用额外的解析方法对选择器进行解析,而是对经过了预编译后的对象进行解析,这样的方式能够有效地提升解析的速度,并且,由于js库不需再调用额外的解析方法,也就可以起到减少js库中代码量的效果。

s104:当确定所述节点数据与所述对象相匹配时,对所述事件进行响应。

节点数据与对象相匹配,则表明该节点就是所要进行监听的节点,进而可以对事件作出响应。

在本申请实施例中,所述的匹配,可认为是:节点数据的对象命中json对象。

通过上述步骤,采用将网页脚本中的选择器进行预编译的方式,可将其编译为特定格式的对象,这样一来,当事件触发后,js库中针对事件代理语句中选择器字符串的解析过程,就可以转换为对特定格式的对象的匹配过程,显然,这样的方式使得js库可以不再调用额外的解析方法,相较于现有技术而言,可提升对事件的响应速度,同时,由于js库可不需再调用额外的解析方法,也就可以起到减少js库中代码量,使得js库实现轻量化,体积更小。

在本申请实施例中,考虑到json格式作为一种便捷、简易的表达语言,可以提升js库解析的速度,因此,可以将网页脚本中的选择器进行预编译为json格式的对象。那么,在本申请实施例中,在实际应用场景下,主要依赖于两部分内容实现:预编译过程以及对预编译后的对象的解析。下面将详细说明这两部分内容。

一、预编译:

在本申请实施例中,考虑到json格式作为一种便捷、简易的表达语言,可以提升js库解析的速度,因此,预编译的目标格式,就是json格式。

基于此,具体而言,预编译设定格式的对象,包括:在所述网页对应的网页脚本中,确定该网页脚本中包含的选择器,对所述选择器进行预编译,生成json对象,将json对象替换所述网页脚本中的选择器,并将替换后的json对象确定为设定格式的对象。

其中,预编译的对象是网页脚本中的选择器,故在本申请实施例中,将首先在网页脚本中,确定出需要进行预编译的选择器。其过程可以为:确定所述网页脚本对应的抽象语法树(abstractsyntaxtree,ast),在所述ast中,按照预设的字符标记,查找包含有该字符标记的节点,将查找到的所述节点所对应的内容确定为选择器。

这里需要说明的是,确定网页脚本所对应的ast,实质上就是确定网页中js源代码的ast,在实际应用中,可以采用相应的解析工具实现,如:homunculus工具,这里并不构成对本申请的限定。

ast可将js源代码中的方法以树形结构进行表达,通过ast能够较为便捷地确定出选择器。考虑到在事件代理的方法中,通常使用前述的.on()函数,所以,可通过ast获得针对.on()函数的树形结构(为了与前述的dom节点进行区别,后续将ast的树形结构中的节点称为ast节点),如图2a所示,事件代理方法中所使用的语句为node.on{‘click’,‘.name’,‘function’},其中‘.name’就是选择器,那么,通过ast便可确定出带有‘.name’字符的ast节点,从而将该ast节点对应的内容确定为选择器。

在确定出选择器后,可以进一步地针对选择器再进行解析,可以认为,对选择器所进行的解析,能够确定出选择器的类型、属性、结构等数据,以便对选择器进行预编译。具体而言,对所述各选择器进行预编译,生成json格式的字符串,包括:确定所述选择器对应的ast,根据所述选择器对应的ast,确定所述选择器的类型,根据所述类型,对所述选择器进行预编译,生成json对象。

沿用如图2a所示的示例,在实际应用中,确定出了选择器后,可在其字符后加入“{}”,使得该选择器的字符变为css选择器字符串,在此基础上,仍可以采用上述的homunculus工具实现对css选择器字符串的解析,生成该选择器的ast。进而,在该选择器的ast的基础上,将选择器编译为json对象。

在本申请实施例中,不同类型的选择器可预编译为不同的josn对象,具体地:

当选择器为并列选择器时,确定并列的每一选择器对应的字符串,将每一选择器对应的字符串编译为该选择器的键,并按照并列结构的顺序,生成包含每一选择器的键,以及预设的标识键值对的json对象。

在此情况下,并列的选择器通常为类选择器、元素选择器、id选择器中的至少一种。在字符表达上,上述的选择器分别以小写字母、.字符、#字符形式进行表达。

例如:并列的选择器包括:.class,div,#id{}。可见,此时有三个选择器(并列),那么,进行预编译时,可将该并列的三个选择器编译为如图2b所示的格式。其中,“_v:true”就是预设的标识键值对,其表示对应的选择器出现。

当然,上述的三种选择器也称为基本选择器,在实际应用中,对基本选择器中的任一一种进行预编译,都可以采用如图2b所示的json对象。这里并不构成对本申请的限定。

需要说明的是,如果是通配符选择器(用“*”符号表示的选择器),其采用与元素选择器相同的规则进行预编译,这里不再过多赘述。

此外,在实际应用中,选择器还可能由基本选择器构成的组合结构,那么,所述选择器的类型为组合结构;根据所述结构,对所述选择器进行预编译,生成json对象,包括:确定所述选择器对应的字符串,将所述选择器对应的字符串编译为选择器的键,并按照设定的组合顺序,对选择器的键排序,生成包含排序后的选择器的键,以及预设的标识键值对的json对象。

具体而言,假设组合选择器分别为:div.class#id{}以及div2#id2.class2{},在进行预编译时,会按照设定的顺序,编译为统一的格式,其结果如图2c所示。当然,本示例中的顺序并不构成对本申请的限定。

当选择器的类型为关系型选择器时,根据所述类型,对所述选择器进行预编译,生成json对象,包括:确定所述选择器对应的字符串,将所述选择器对应的字符串编译为选择器的键,并按照倒序排序,生成包含选择器的键,以及预设的标识键值对的json对象。

本申请实施例中,关系型的选择器,可包括:包含关系(字符表达上,使用空格)、子选择器(字符表达上,使用连接符>)、相邻选择器(连接符为+)、兄弟选择器(连接符为~)。

具体而言,如果为包含选择器,如:diva{},则按照倒序排序的方式,进行预编译,结果如图2c所示。

而如果其中包含关系连接符(>、+、~),那么,预编译时,还会将关系连接符进行编译,换言之,当所述关系结构中包含关系连接符时,将所述选择器对应的字符串编译为选择器的键,还包括:将所述选择器对应的字符串中的关系连接符,编译为预设格式的关系键。

在本申请实施例中,会将关系连接符编译为以“_”连接的键,具体如图2d所示。

当选择器为属性选择器时,根据所述类型,对所述选择器进行预编译,生成json对象,包括:确定所述选择器对应的字符串;其中,所述字符串中包含键名字符串、属性标识符以及属性字符串;将键名字符串编译为选择器的键,将属性标识符编译为预设格式的标识键,并将属性字符串编译为多维数组,生成包含有该选择器的键、预设格式的标识键以及包含有预设键及键值的多维数组的json对象。

属性选择器中包含“[]”标识符,该标识符中的字符为属性字符串,如:div[attr]。在进行编译时,将标识符编译为“_[”的形式的标识键。

当然,在实际应用中,属性选择器可能为:div[attr],div[attr2]{}或div[attr][attr2]{}等,所以,标识键“_[”所对应的值为多维数组,即,在编译时,采用[]结构,例如:对于属性选择器div[attr],div[attr2]{},其编译结果如图2e所示,从图中可见,“_[”所对应的值包含“[attr],{“_v”:true}”以及“[attr2],{“_v”:true}”两项构成的数组。

如果选择器是div[attr][attr2]{},则编译结果如图2f所示,从图中可见,“_[”所对应的值为“[attr],[attr2],{“_v”:true}”,换言之,[attr],[attr2]构成了该数组的第一项。

作为此方式的延伸,如果属性选择器中包含比较运算符(如:=、>、<等),则多维数组中的第一项中就包含该比较运算符,以选择器div[attr=v]为例,其编译结果如图2g所示。

当然,如果选择器中包含关系结构和属性结构,则结合关系结构和属性结构的编译规则进行预编译,这里不再过多赘述。

当选择器的类型为伪类选择器时,根据所述类型,对所述选择器进行预编译,生成json对象,包括:确定所述选择器对应的字符串;其中,所述字符串中包含键名字符串以及伪类字符串;将键名字符串编译为选择器的键,将伪类字符串编译为多维数组,生成包含有该选择器的键、伪类字符串以及包含有预设键及键值的多维数组的json对象。

如:选择器div:hover{},其编译结果如图2h所示。如果包含多个伪类,则将多个伪类构成一个多维数组。

以上是预编译的过程,在进行了预编译生成json对象后,js库便会在事件触发时,对json对象进行解析,其解析过程如下:

根据dom所提供的接口,获取节点的属性数据(如tag、class、id等)。进一步查看属性数据对应的键是否出现在json对象中,若是,并且该键所对应的json对象包含标识键值对,则说明匹配命中,可以响应事件回调。

如:<node><div></div></node>

node.on(‘click’,‘div’,callback)

其表示,节点中包含有对象“div”。同时假设,对于div{},其json对象如图2a中所示,那么,当点击该节点时,进行比对匹配后,可确定匹配命中,即可响应。

通配符表示任意,因此不用查看是否出现,只要有内容即为匹配成功。当然,在实际应用中,若没有对应键(*为没内容),则匹配失败,直接退出。

但如果有内容,而没有_v:true标识键值对出现,则需进一步进行匹配:

方式一、使用浏览器接口获取当前节点的父节点parent,将parent作为当前节点,进行上述匹配过程。

方式二、如果当前json对象中包含_>、_+,_~键中的一种,说明选择器中有关系选择符存在,对所有关系选择器的解析流程一致,故只以其中一种举例:当出现_+时,说明有相邻关系选择器出现,用dom标准接口获取当前节点的前面紧邻的节点prev,若无,则跳出,若有,则将节点prev作为当前节点,进行上述匹配过程。

方式三、如果当前json对象中包含_[键,说明选择器中有属性存在,当有_[键出现时,说明需要检查属性值,其为一个多维数组,进行逐维、逐项遍历。

方式四、如果当前json对象中包含_:键,说明选择器中有伪类存在,所有伪类处理方式相同,因此只以其中一种举例,下同。当出现_:时,检查其对应的属性值,其为一个多维数组,先遍历第一维,每一项是个长度为2的数组,第1项为存在的若干个伪类组,遍历伪类组,伪类组的每项是伪类,检测当前节点和伪类是否匹配,返回匹配结果是否成功。当伪类组全部成功时,第2项作为新的json对象,进行上述的匹配过程。

检测方式为标准dom接口,每种伪类对应意义如下:

:root当前节点是否为根节点,即为body节点或者无parent;

:first-child当前节点是否为同级的第一个节点,即无prev;

:last-child当前节点是否为同级的最后一个节点,即无next;

:only-child当前节点是否为唯一一个节点,即无prev和next;

:nth-child(n)当前节点是否是第n个节点;

:nth-last-child(n)当前节点是否是倒数第n个节点;

:first-of-type当前节点是否为同级且相同类型的第一个节点,即所有的prev没有相同类型;

:last-of-type当前节点是否为同级且相同类型的最后一个节点,即所有的next没有相同类型;

:only-of-type当前节点是否为同级且相同类型的唯一一个节点,即所有的prev和next没有相同类型;

:nth-of-type(n)当前节点是否是相同类型的第n个节点;

:nth-last-of-type(n)当前节点是否是相同类型的倒数第n个节点;

:empty当前节点是否没有子节点;

:checked当前节点是否处于选中状态;

:enabled当前节点是否处于可用状态;

:disabled当前节点是否处于禁用状态;

:target当前节点是否匹配当前锚点。

结合上述内容,显然,当事件触发后,js库中针对事件代理语句中选择器字符串的解析过程,就可以转换为对json对象的匹配过程,这样的方式使得js库可以不再调用额外的解析方法,从而有效提升了对事件响应的效率。

以上为本申请实施例提供的实现前端事件代理的方法,基于同样的思路,本申请实施例还提供一种实现前端事件代理的装置。如图3所示,实现前端事件代理的装置包括:

确定模块301,当监听到网页中发生的事件后,确定与所述事件相关的各层级节点。

获取模块302,获取所述各层级节点的节点数据。

匹配模块303,针对每一层级节点,根据获取到的所述节点数据,与网页脚本中预编译的设定格式的对象进行比对匹配。其中,预编译的设定格式的对象,能够反映不同层级节点数据所对应的对象。

响应模块304,当确定所述节点数据与所述对象相匹配时,对所述事件进行响应。

其中,所述设定格式,包括:json格式。

在此基础上,所述装置还包括:预编译模块305,在所述网页对应的网页脚本中,确定该网页脚本中包含的选择器,对所述选择器进行预编译,生成json对象,将json对象串替换所述网页脚本中的选择器,并将替换后的json对象确定为设定格式的对象。

进一步地,预编译模块305,确定所述网页脚本对应的抽象语法树ast,在所述ast中,按照预设的字符标记,查找包含有该字符标记的节点,将查找到的所述节点所对应的内容确定为选择器。

预编译模块305,确定所述选择器对应的ast,根据所述选择器对应的ast,确定所述选择器的类型,根据所述类型,对所述选择器进行预编译,生成json对象。

当所述选择器的类型为并列构,预编译模块305,确定并列的每一选择器对应的字符串,将每一选择器对应的字符串编译为该选择器的键,并按照并列结构的顺序,生成包含每一选择器的键,以及预设的标识键值对的json对象。

其中,所述选择器包括:类选择器、元素选择器及id选择器中的至少一种。

当所述选择器的类型为组合结构,预编译模块305,确定所述选择器对应的字符串,将所述选择器对应的字符串编译为选择器的键,并按照设定的组合顺序,对选择器的键排序,生成包含排序后的选择器的键,以及预设的标识键值对的json对象。

当所述选择器的结构为关系结构,预编译模块305,确定所述选择器对应的字符串,将所述选择器对应的字符串编译为选择器的键,并按照倒序排序,生成包含选择器的键,以及预设的标识键值对的json对象。

当所述关系结构中包含关系连接符时,预编译模块305,将所述选择器对应的字符串中的关系连接符,编译为预设格式的关系键。

当所述选择器的类型为属性结构,预编译模块305,确定所述选择器对应的字符串;其中,所述字符串中包含键名字符串、属性标识符以及属性字符串,将键名字符串编译为选择器的键,将属性标识符编译为预设格式的标识键,并将属性字符串编译为多维数组,生成包含有该选择器的键、预设格式的标识键以及包含有预设键及键值的多维数组的json对象。

当所述选择器的类型为伪类结构,预编译模块305,确定所述选择器对应的字符串;其中,所述字符串中包含键名字符串以及伪类字符串,将键名字符串编译为选择器的键,将伪类字符串编译为多维数组,生成包含有该选择器的键、伪类字符串以及包含有预设键及键值的多维数组的json对象。

匹配模块303,确定获取到的所述节点数据对应的对象,确定所述json对象的键名以及标识键值对,根据所述节点数据对应的对象,以及网页脚本中预编译的json对象键名以及标识键值对,进行比对匹配。

在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。

本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

完整全部详细技术资料下载
当前第1页 1  2 
相关技术
  • 一种传感装置和轮胎压力监测系...
  • 一种软件包自动化安装与配置方...
  • 程序批量烧录工作平台及批量烧...
  • 一种闸机红外检测光幕的配置方...
  • 一种虚拟移动终端的应用程序配...
  • 嵌入式设备应用程序的自恢复方...
  • 压缩机参数配置的方法与流程
  • 一种基于服务器端升级的客户端...
  • 音频播放系统的升级方法、装置...
  • 音频系统升级方法、装置与流程
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1
eve事件监测装置拿钱相关技术
  • 用于提示事件结果的方法和装置与流程
  • 拥堵事件提示方法及装置与流程
  • 事件执行方法和装置与流程
  • 事件脉络生成方法和装置与流程
  • 事件变更信息的获取方法及装置与流程
  • 应用消息事件控制方法、装置及移动终端与流程
  • 一种堆积事件处理方法及装置与流程
  • 终端提醒事件的提醒方法及装置与流程
  • 堆积事件处理方法及装置与流程
  • 日程事件协同方法、装置和终端设备与流程
sql代理隔离装置相关技术
  • 一种隔离分断装置的制作方法
  • 一种包括隔离装置的净水设备的制作方法
  • 一种移动负压隔离装置的制作方法
  • 一种室内施工隔离装置的制作方法
  • 一种施工隔离装置的制作方法
  • 一种隔离膜收尾装置的制作方法
  • 一种公路专用隔离装置的制作方法
  • TCP代理方法及装置与流程
  • 多操作系统装置的访问隔离的制作方法
  • 一种资讯发送方法及装置和信息代理发送方法及装置与流程
装置气密性检查方法相关技术
  • 一种实现资源预留的方法和装置与流程
  • 语音处理方法及装置与流程
  • 紧急呼救装置和紧急呼救方法与流程
  • 一种生成室内地图的方法及装置与流程
  • 一种商品推荐方法及装置与流程
  • 一种熟人间拼车的方法和装置与流程
  • 一种资源转移方法及装置与流程
  • 发货调度方法及装置与流程
  • 一种提醒方法及装置与流程
  • 解锁方法及装置与流程
检查装置气密性的方法相关技术
  • 一种商品推荐方法及装置与流程
  • 一种熟人间拼车的方法和装置与流程
  • 一种资源转移方法及装置与流程
  • 发货调度方法及装置与流程
  • 一种提醒方法及装置与流程
  • 解锁方法及装置与流程
  • 解锁方法及装置与流程
  • 一种检查方法、装置及终端与流程
  • 网页收藏方法及装置与流程
  • 一种调度方法和装置与流程

深圳SEO优化公司营口英文网站建设推荐张家口企业网站改版哪家好郴州网站改版推荐安顺关键词按天收费公司北京优秀网站设计公司固原网站搭建龙岗英文网站建设公司泉州seo网站优化公司大理网站搭建公司资阳网站优化软件多少钱襄樊百度关键词包年推广重庆企业网站制作公司亳州SEO按天计费公司长葛百度网站优化排名价格韶关营销网站推荐蚌埠网站搭建公司遂宁网站建设设计报价巢湖百度网站优化排名推荐吉林营销网站公司木棉湾营销型网站建设公司宿迁关键词按天计费多少钱洛阳网站推广系统报价泉州百度网站优化定西建设网站多少钱张家界外贸网站制作贵阳网站优化按天收费哪家好池州网站设计模板推荐北海至尊标王推荐红河模板制作价格济南seo排名公司歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化