专利名称:网页的用户自定义事件处理方法
技术领域:
本发明涉及一种用户自定义事件的处理方法,尤其是有关网页的用户自定义事件队列(queue)的控制及发送方法。
在网页设计中,目前标准的文件对象模式(DOMs)普遍被使用于描述网页中所有对象的间的关系。该文件对象模式是一跨平台及跨语言的界面,能让程序及脚本(programs and scripts)动态地存取及更新文件的内容及型态(content and styles)。该模式的规格书包括二部份核心及HTML。核心DOM提供用于任何结构的文件界面,而HTML DOM提供额外界面,使HTML具有较佳的观看画面。该模型虽可提供通过如JavaCript等脚本语言来存取网页的功能,但只提供了部份标准事件的获取和处理方法,例如,制作一参考变量,在网页载入时具有压缩语法的功能。若是遇到网页中用户自定义事件,则缺乏相对应的灵活支援和管理,并且对某些需要用户自行开发的互动式应用类型网页,往往在操作过程中出现不能令用户满意的现象。例如,用户在开发一个包含ListControl<Select>对象的互动式网页时,开发者可以根据需要对ListBox进行增加(即AddItem),此时针对这种操作,标准的DOM模型仅只提供独立线程(independent thread)的支援,也就是说,当用户在List中添加一项时,必须等待到该独立线程的任务完成时才能接受新增加项目的处理,这样会出现a.需要整个页面重新更新;b.页面局部出现长时间的空白,类似假停机效果。
据此,本发明的目的是提供一种有关网页的用户自定义事件队列(queue)的处理方法。该方法在DOM标准模式中使用一定时器(Timer),利用该定时器定时控制中断信号来模拟一新线程,当用户在网页中做某些操作,例如上例中增加List中的一项时,即可实现多线程的操作,即新增加的部份可同步出现在网页上,且操作中没有停顿。
本发明的另一目的是提供一种用户自定义事件队列的控制及发送方法,其采用事件队列形式,扩展对各种事件的支援,并允许用户对不同的元素定义各种不同事件。
本发明提供一种用户自定义事件队列的控制及发送方法。该方法包括下列步骤利用一事件生成模块自一网页中取得一用户自定义事件出现的信息;将该取得的用户自定义事件信息送至一事件注册管理模块进行注册处理,其中包括对该用户自定义事件的添加(register)或删除(unregister)注册处理;将该经注册处理的用户自定义事件经由一事件发送模块插入该网页中。
为让本发明的上述及其它目的、特征、与优点能更清楚,下文特举一优选实施例,并配合附图,作详细说明
图1显示本发明的功能模组图及其操作流程;图2显示本发明的用户自定义事件结构示意图;图3显示本发明的事件注册管理的流程;图4显示本发明的删除事件的流程;图5显示本发明的事件生成的流程;以及图6显示本发明的事件插发的流程。
参考图1,其表示根据本发明对网页的用户自定义事件处理流程。在图1中,用户在一页面101上自定义一事件,首先由该页面101将这个信息传递出来,由本发明所提供的一事件生成模块102取得这个信息(Getmessage)(步骤S1),并将所得到的信息送交一事件注册管理模块103进行注册处理(步骤S3),其中包括对该事件的添加(register)或删除(unregister)注册处理,最後由一事件发送模块104,取得这个经过注册的新事件Get message,并将该用户自定义的新事件插入该页面101中(步骤S5)。
参考图2,其显示本发明的用户自定义事件结构示意图。在图2中,相关的自定义描述和链表结构包括A.事件描述,其中,该自定义结构包括一事件接收对象指针、一事件名、一事件处理函数;B.事件包(event packet),其包括一事件名、一来源(Source)对象名、一事件响应方法;C.注册链表;以及D.事件队列。上述有关用户自定义事件结构将配合本发明的各流程于下作描述。
事件管理流程本流程包含用户自定义事件的注册以及用户自定义事件的删除两方面的操作,将分别描述于下。
1.用户自定义事件注册管理(Register)流程参考图3,其显示本发明的事件注册管理的流程。如图3所示,首先,根据图2的事件描述格式填写事件描述表(步骤301),读取图2中所示的已建立好的事件注册链表的第一项(步骤302),判断该读取项内容是否为空(步骤303),如果是,则将用户新定义的注册事件插入该链表中(步骤304),操作返回上一层,如果该链表中该读取项内容不为空,则读取该链表中该项的内容(步骤305),判断当前要注册的自定义事件与该链表中该读取项的事件名称是否相同(步骤306),如果相同,则表明当前所注册的自定义事件在链表中已经存在,故选取该链表中下一事件项的指针(步骤307),以便读取下一项内容,如果当前要注册的自定义事件与链表中所对应的事件名称不相同,则读取其在图2中所对应的接收对象链表(例如,图2中所示的对应于事件名1的接收对象1、接收对象2、至接收对象N)(步骤308),判断该链表内容是否为空(步骤309),如果是,则将目前需要注册的自定义事件插入链表中(步骤310),程序返回上一层,如果不为空,则读取该接收对象链表中该项的内容(步骤311),判断所读取的内容是否与要注册的自定义事件为同一对象(步骤312),如果是,则程序返回上一层;如果不是,则读取该接受对象链表中的下一项指针(步骤313)。
2.用户自定义事件删除(Unregister)流程参考图4,其显示本发明的删除事件的流程。如图4所示,首先,读取事件注册链表中的第一项(步骤401),判断该读取项内容是否为空(步骤402),如果是,则程序返回上一层,如果不是,则读取该项内容(步骤403),判断该链表中该项事件名称与用户自定义事件的名称是否相同(步骤404),如果不同,则读取该链表的下一项内容(步骤405),如果相同,则读取该链表所对应的对象链表中相对应项的内容(步骤406),判断该读取项内容是否为空(步骤407),如果是,则程序返回上一层,如果不为空,则取该对象链表中的内容(步骤408),决定所得到的对象是否与用户要删除的对象是同一对象(步骤409),如果是,则将其移除(步骤410),如果不是,则取该链表中的下一项指针(步骤411)。
事件生成流程参考图5,其显示本发明的事件生成的流程。如图5所示,首先,找寻要发送的事件名称(步骤501),即在该事件注册链表中依序比对事件名称,以决定是否找到要发送的事件名称(步骤502),如果未找到,则退出该操作(步骤503),如果找到,则从其对象链表中寻找相对应的对象内容(步骤504),决定是否找到(步骤505),如果否,则退出该操作(步骤503),如果找到,则将该对象链表中相关的内容生成如图2中所示的事件包(步骤506),并将该事件包加入该事件队列中(步骤507)。
事件发送流程参考图6,其显示本发明的事件发送的流程。如图6所示,首先,设定一定时器(Timer)的时间间隔(比如为0.3秒)(步骤601),等待一事件的发送(步骤602),从该事件队列中找到该欲发送的事件项(步骤603),判断该项内容是否为空(步骤604),如果为空,则返回上一层程序(步骤602),以等待下一发送事件,如果不为空,则从该欲发送事件的事件包中取出该事件包的响应函数(该响应函数由开发者在注册自定义事件时预先指定)(步骤605),决定该事件包是否为空(步骤606),如果是,则返回上一层程序(步骤602),用以等待後续的发送事件,如果不为空,则使用该响应函数以回应该自定义事件(步骤607)。
虽然本发明已以一优选实施例揭露如上,然而其并非用以限定本发明,任何本领域内的普通技术人员可在不脱离本发明的精神及范围情况下,进行各种修改和变化。
权利要求
1.一种网页的用户自定义事件的处理方法,该方法包括下列步骤利用一事件生成模块自一网页中取得一用户自定义事件出现的信息;将该取得的用户自定义事件信息送至一事件注册管理模块进行注册处理,其中包括对该用户自定义事件的添加(register)或删除(unregister)注册处理;将该经注册处理的用户自定义事件经由一事件发送模块插入该网页中。
2.如权利要求1所述的处理方法,其中,该用户自定义事件包括一有关事件描述的自定义事件结构、一用于发送该事件所需的事件包、一注册链表、及一事件队列,其中,该自定义事件结构包括该事件接收对象指针、该事件名称、及该事件处理函数;该事件包括该事件名称、该来源对象名称、及该事件响应方法。
3.如权利要求1所述的处理方法,其中,该用户自定义事件的添加注册处理步骤包括下列步骤根据该自定义事件结构填写一用于注册的事件描述表;读取一预设的事件注册链表的第一项;判断该读取项内容是否为空;如果是,则将该用户利用该事件描述表所定义的要注册事件插入该链表中,完成添加注册处理并使操作返回上一层程序,如果该链表中该读取项内容不为空,则读取该链表中该项的内容;比较该要注册的自定义事件与该链表中该读取项的事件名称是否相同;如果相同,则表明该要注册的自定义事件在链表中已经存在,故选取该链表中下一事件项的指针,以便读取下一项内容,如果该要注册的自定义事件与链表中所对应的事件名称不相同,则读取该要注册的自定义事件所对应的接收对象链表;判断该链表内容是否为空;如果是,则将该要注册的自定义事件插入该接收对象链表中,完成添加注册处理并使程序返回上一层,如果不为空,则读取该接收对象链表中该项的内容;判断所读取的内容是否与要注册的自定义事件为同一对象;及如果是,则程序返回上一层,如果不是,则读取该接受对象链表中的下一项指针。
4.如权利要求1所述的处理方法,其中,该用户自定义事件的删除注册处理步骤包括下列步骤读取一事件注册链表中的第一项;判断该读取项内容是否为空;如果是,则程序返回上一层,如果不是,则读取该项内容;判断该链表中该项事件名称与用户自定义事件的名称是否相同;如果不同,则读取该链表的下一项内容,如果相同,则读取该链表所对应的对象链表中相对应项的内容;判断该读取项内容是否为空;如果是,则程序返回上一层,如果不为空,则取该对象链表中的内容;决定所得到的对象是否与用户要删除的对象是同一对象;及如果是,则将其移除,如果不是,则取该链表中的下一项指针。
5.如权利要求1所述的处理方法,其中,所述利用一事件生成模块自一网页中取得一用户自定义事件的步骤还包括下列步骤找寻一要发送的事件名称;在该事件注册链表中依序比对事件名称,以决定是否找到要发送的事件名称;如果未找到,则退出该操作,如果找到,则从其对象链表中寻找相对应的对象内容;决定是否已找到;如果否,则退出该操作,如果找到,则将该对象链表中相关的内容生成一事件包;将该事件包加入该事件队列中,完成该自定义事件的取得。
6.如权利要求1所述的处理方法,其中,该事件发送的处理包括下列步骤设定一定时器(Timer)的时间间隔;等待一事件的发送;从该事件队列中找到该欲发送的事件项;判断该项内容是否为空;如果为空,则返回上一层程序(步骤602),以等待下一发送事件,如果不为空,则从该欲发送事件的事件包中取出该事件包的响应函数;决定该事件包是否为空;及如果是,则返回上一层程序,以等待後续的发送事件,如果不为空,则使用该响应函数以回应该自定义事件,由此将该自定义事件插入该网页中。
7.如权利要求6所述的处理方法,其中,该响应函数是在注册该自定义事件时已事先预定的。
全文摘要
一种网页的用户自定义事件的处理方法,该方法包括下列步骤:利用一事件生成模块自一网页中取得一用户自定义事件出现的信息;将该取得的用户自定义事件信息送至一事件注册管理模块进行注册处理,其中包括对该用户自定义事件的添加(register)或删除(unregister)注册处理;将该经注册处理的用户自定义事件经由一事件发送模块插入该网页中。
文档编号G06F9/44GK1369828SQ0110460
公开日2002年9月18日 申请日期2001年2月15日 优先权日2001年2月15日
发明者陈玄同, 林光信 申请人:英业达股份有限公司