專利名稱:網(wǎng)頁的用戶自定義事件處理方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種用戶自定義事件的處理方法,尤其是有關(guān)網(wǎng)頁的用戶自定義事件隊列(queue)的控制及發(fā)送方法。
在網(wǎng)頁設(shè)計中,目前標(biāo)準(zhǔn)的文件對象模式(DOMs)普遍被使用于描述網(wǎng)頁中所有對象的間的關(guān)系。該文件對象模式是一跨平臺及跨語言的界面,能讓程序及腳本(programs and scripts)動態(tài)地存取及更新文件的內(nèi)容及型態(tài)(content and styles)。該模式的規(guī)格書包括二部份核心及HTML。核心DOM提供用于任何結(jié)構(gòu)的文件界面,而HTML DOM提供額外界面,使HTML具有較佳的觀看畫面。該模型雖可提供通過如JavaCript等腳本語言來存取網(wǎng)頁的功能,但只提供了部份標(biāo)準(zhǔn)事件的獲取和處理方法,例如,制作一參考變量,在網(wǎng)頁載入時具有壓縮語法的功能。若是遇到網(wǎng)頁中用戶自定義事件,則缺乏相對應(yīng)的靈活支援和管理,并且對某些需要用戶自行開發(fā)的互動式應(yīng)用類型網(wǎng)頁,往往在操作過程中出現(xiàn)不能令用戶滿意的現(xiàn)象。例如,用戶在開發(fā)一個包含ListControl<Select>對象的互動式網(wǎng)頁時,開發(fā)者可以根據(jù)需要對ListBox進(jìn)行增加(即AddItem),此時針對這種操作,標(biāo)準(zhǔn)的DOM模型僅只提供獨立線程(independent thread)的支援,也就是說,當(dāng)用戶在List中添加一項時,必須等待到該獨立線程的任務(wù)完成時才能接受新增加項目的處理,這樣會出現(xiàn)a.需要整個頁面重新更新;b.頁面局部出現(xiàn)長時間的空白,類似假停機(jī)效果。
據(jù)此,本發(fā)明的目的是提供一種有關(guān)網(wǎng)頁的用戶自定義事件隊列(queue)的處理方法。該方法在DOM標(biāo)準(zhǔn)模式中使用一定時器(Timer),利用該定時器定時控制中斷信號來模擬一新線程,當(dāng)用戶在網(wǎng)頁中做某些操作,例如上例中增加List中的一項時,即可實現(xiàn)多線程的操作,即新增加的部份可同步出現(xiàn)在網(wǎng)頁上,且操作中沒有停頓。
本發(fā)明的另一目的是提供一種用戶自定義事件隊列的控制及發(fā)送方法,其采用事件隊列形式,擴(kuò)展對各種事件的支援,并允許用戶對不同的元素定義各種不同事件。
本發(fā)明提供一種用戶自定義事件隊列的控制及發(fā)送方法。該方法包括下列步驟利用一事件生成模塊自一網(wǎng)頁中取得一用戶自定義事件出現(xiàn)的信息;將該取得的用戶自定義事件信息送至一事件注冊管理模塊進(jìn)行注冊處理,其中包括對該用戶自定義事件的添加(register)或刪除(unregister)注冊處理;將該經(jīng)注冊處理的用戶自定義事件經(jīng)由一事件發(fā)送模塊插入該網(wǎng)頁中。
為讓本發(fā)明的上述及其它目的、特征、與優(yōu)點能更清楚,下文特舉一優(yōu)選實施例,并配合附圖,作詳細(xì)說明
圖1顯示本發(fā)明的功能模組圖及其操作流程;圖2顯示本發(fā)明的用戶自定義事件結(jié)構(gòu)示意圖;圖3顯示本發(fā)明的事件注冊管理的流程;圖4顯示本發(fā)明的刪除事件的流程;圖5顯示本發(fā)明的事件生成的流程;以及圖6顯示本發(fā)明的事件插發(fā)的流程。
參考圖1,其表示根據(jù)本發(fā)明對網(wǎng)頁的用戶自定義事件處理流程。在圖1中,用戶在一頁面101上自定義一事件,首先由該頁面101將這個信息傳遞出來,由本發(fā)明所提供的一事件生成模塊102取得這個信息(Getmessage)(步驟S1),并將所得到的信息送交一事件注冊管理模塊103進(jìn)行注冊處理(步驟S3),其中包括對該事件的添加(register)或刪除(unregister)注冊處理,最後由一事件發(fā)送模塊104,取得這個經(jīng)過注冊的新事件Get message,并將該用戶自定義的新事件插入該頁面101中(步驟S5)。
參考圖2,其顯示本發(fā)明的用戶自定義事件結(jié)構(gòu)示意圖。在圖2中,相關(guān)的自定義描述和鏈表結(jié)構(gòu)包括A.事件描述,其中,該自定義結(jié)構(gòu)包括一事件接收對象指針、一事件名、一事件處理函數(shù);B.事件包(event packet),其包括一事件名、一來源(Source)對象名、一事件響應(yīng)方法;C.注冊鏈表;以及D.事件隊列。上述有關(guān)用戶自定義事件結(jié)構(gòu)將配合本發(fā)明的各流程于下作描述。
事件管理流程本流程包含用戶自定義事件的注冊以及用戶自定義事件的刪除兩方面的操作,將分別描述于下。
1.用戶自定義事件注冊管理(Register)流程參考圖3,其顯示本發(fā)明的事件注冊管理的流程。如圖3所示,首先,根據(jù)圖2的事件描述格式填寫事件描述表(步驟301),讀取圖2中所示的已建立好的事件注冊鏈表的第一項(步驟302),判斷該讀取項內(nèi)容是否為空(步驟303),如果是,則將用戶新定義的注冊事件插入該鏈表中(步驟304),操作返回上一層,如果該鏈表中該讀取項內(nèi)容不為空,則讀取該鏈表中該項的內(nèi)容(步驟305),判斷當(dāng)前要注冊的自定義事件與該鏈表中該讀取項的事件名稱是否相同(步驟306),如果相同,則表明當(dāng)前所注冊的自定義事件在鏈表中已經(jīng)存在,故選取該鏈表中下一事件項的指針(步驟307),以便讀取下一項內(nèi)容,如果當(dāng)前要注冊的自定義事件與鏈表中所對應(yīng)的事件名稱不相同,則讀取其在圖2中所對應(yīng)的接收對象鏈表(例如,圖2中所示的對應(yīng)于事件名1的接收對象1、接收對象2、至接收對象N)(步驟308),判斷該鏈表內(nèi)容是否為空(步驟309),如果是,則將目前需要注冊的自定義事件插入鏈表中(步驟310),程序返回上一層,如果不為空,則讀取該接收對象鏈表中該項的內(nèi)容(步驟311),判斷所讀取的內(nèi)容是否與要注冊的自定義事件為同一對象(步驟312),如果是,則程序返回上一層;如果不是,則讀取該接受對象鏈表中的下一項指針(步驟313)。
2.用戶自定義事件刪除(Unregister)流程參考圖4,其顯示本發(fā)明的刪除事件的流程。如圖4所示,首先,讀取事件注冊鏈表中的第一項(步驟401),判斷該讀取項內(nèi)容是否為空(步驟402),如果是,則程序返回上一層,如果不是,則讀取該項內(nèi)容(步驟403),判斷該鏈表中該項事件名稱與用戶自定義事件的名稱是否相同(步驟404),如果不同,則讀取該鏈表的下一項內(nèi)容(步驟405),如果相同,則讀取該鏈表所對應(yīng)的對象鏈表中相對應(yīng)項的內(nèi)容(步驟406),判斷該讀取項內(nèi)容是否為空(步驟407),如果是,則程序返回上一層,如果不為空,則取該對象鏈表中的內(nèi)容(步驟408),決定所得到的對象是否與用戶要刪除的對象是同一對象(步驟409),如果是,則將其移除(步驟410),如果不是,則取該鏈表中的下一項指針(步驟411)。
事件生成流程參考圖5,其顯示本發(fā)明的事件生成的流程。如圖5所示,首先,找尋要發(fā)送的事件名稱(步驟501),即在該事件注冊鏈表中依序比對事件名稱,以決定是否找到要發(fā)送的事件名稱(步驟502),如果未找到,則退出該操作(步驟503),如果找到,則從其對象鏈表中尋找相對應(yīng)的對象內(nèi)容(步驟504),決定是否找到(步驟505),如果否,則退出該操作(步驟503),如果找到,則將該對象鏈表中相關(guān)的內(nèi)容生成如圖2中所示的事件包(步驟506),并將該事件包加入該事件隊列中(步驟507)。
事件發(fā)送流程參考圖6,其顯示本發(fā)明的事件發(fā)送的流程。如圖6所示,首先,設(shè)定一定時器(Timer)的時間間隔(比如為0.3秒)(步驟601),等待一事件的發(fā)送(步驟602),從該事件隊列中找到該欲發(fā)送的事件項(步驟603),判斷該項內(nèi)容是否為空(步驟604),如果為空,則返回上一層程序(步驟602),以等待下一發(fā)送事件,如果不為空,則從該欲發(fā)送事件的事件包中取出該事件包的響應(yīng)函數(shù)(該響應(yīng)函數(shù)由開發(fā)者在注冊自定義事件時預(yù)先指定)(步驟605),決定該事件包是否為空(步驟606),如果是,則返回上一層程序(步驟602),用以等待後續(xù)的發(fā)送事件,如果不為空,則使用該響應(yīng)函數(shù)以回應(yīng)該自定義事件(步驟607)。
雖然本發(fā)明已以一優(yōu)選實施例揭露如上,然而其并非用以限定本發(fā)明,任何本領(lǐng)域內(nèi)的普通技術(shù)人員可在不脫離本發(fā)明的精神及范圍情況下,進(jìn)行各種修改和變化。
權(quán)利要求
1.一種網(wǎng)頁的用戶自定義事件的處理方法,該方法包括下列步驟利用一事件生成模塊自一網(wǎng)頁中取得一用戶自定義事件出現(xiàn)的信息;將該取得的用戶自定義事件信息送至一事件注冊管理模塊進(jìn)行注冊處理,其中包括對該用戶自定義事件的添加(register)或刪除(unregister)注冊處理;將該經(jīng)注冊處理的用戶自定義事件經(jīng)由一事件發(fā)送模塊插入該網(wǎng)頁中。
2.如權(quán)利要求1所述的處理方法,其中,該用戶自定義事件包括一有關(guān)事件描述的自定義事件結(jié)構(gòu)、一用于發(fā)送該事件所需的事件包、一注冊鏈表、及一事件隊列,其中,該自定義事件結(jié)構(gòu)包括該事件接收對象指針、該事件名稱、及該事件處理函數(shù);該事件包括該事件名稱、該來源對象名稱、及該事件響應(yīng)方法。
3.如權(quán)利要求1所述的處理方法,其中,該用戶自定義事件的添加注冊處理步驟包括下列步驟根據(jù)該自定義事件結(jié)構(gòu)填寫一用于注冊的事件描述表;讀取一預(yù)設(shè)的事件注冊鏈表的第一項;判斷該讀取項內(nèi)容是否為空;如果是,則將該用戶利用該事件描述表所定義的要注冊事件插入該鏈表中,完成添加注冊處理并使操作返回上一層程序,如果該鏈表中該讀取項內(nèi)容不為空,則讀取該鏈表中該項的內(nèi)容;比較該要注冊的自定義事件與該鏈表中該讀取項的事件名稱是否相同;如果相同,則表明該要注冊的自定義事件在鏈表中已經(jīng)存在,故選取該鏈表中下一事件項的指針,以便讀取下一項內(nèi)容,如果該要注冊的自定義事件與鏈表中所對應(yīng)的事件名稱不相同,則讀取該要注冊的自定義事件所對應(yīng)的接收對象鏈表;判斷該鏈表內(nèi)容是否為空;如果是,則將該要注冊的自定義事件插入該接收對象鏈表中,完成添加注冊處理并使程序返回上一層,如果不為空,則讀取該接收對象鏈表中該項的內(nèi)容;判斷所讀取的內(nèi)容是否與要注冊的自定義事件為同一對象;及如果是,則程序返回上一層,如果不是,則讀取該接受對象鏈表中的下一項指針。
4.如權(quán)利要求1所述的處理方法,其中,該用戶自定義事件的刪除注冊處理步驟包括下列步驟讀取一事件注冊鏈表中的第一項;判斷該讀取項內(nèi)容是否為空;如果是,則程序返回上一層,如果不是,則讀取該項內(nèi)容;判斷該鏈表中該項事件名稱與用戶自定義事件的名稱是否相同;如果不同,則讀取該鏈表的下一項內(nèi)容,如果相同,則讀取該鏈表所對應(yīng)的對象鏈表中相對應(yīng)項的內(nèi)容;判斷該讀取項內(nèi)容是否為空;如果是,則程序返回上一層,如果不為空,則取該對象鏈表中的內(nèi)容;決定所得到的對象是否與用戶要刪除的對象是同一對象;及如果是,則將其移除,如果不是,則取該鏈表中的下一項指針。
5.如權(quán)利要求1所述的處理方法,其中,所述利用一事件生成模塊自一網(wǎng)頁中取得一用戶自定義事件的步驟還包括下列步驟找尋一要發(fā)送的事件名稱;在該事件注冊鏈表中依序比對事件名稱,以決定是否找到要發(fā)送的事件名稱;如果未找到,則退出該操作,如果找到,則從其對象鏈表中尋找相對應(yīng)的對象內(nèi)容;決定是否已找到;如果否,則退出該操作,如果找到,則將該對象鏈表中相關(guān)的內(nèi)容生成一事件包;將該事件包加入該事件隊列中,完成該自定義事件的取得。
6.如權(quán)利要求1所述的處理方法,其中,該事件發(fā)送的處理包括下列步驟設(shè)定一定時器(Timer)的時間間隔;等待一事件的發(fā)送;從該事件隊列中找到該欲發(fā)送的事件項;判斷該項內(nèi)容是否為空;如果為空,則返回上一層程序(步驟602),以等待下一發(fā)送事件,如果不為空,則從該欲發(fā)送事件的事件包中取出該事件包的響應(yīng)函數(shù);決定該事件包是否為空;及如果是,則返回上一層程序,以等待後續(xù)的發(fā)送事件,如果不為空,則使用該響應(yīng)函數(shù)以回應(yīng)該自定義事件,由此將該自定義事件插入該網(wǎng)頁中。
7.如權(quán)利要求6所述的處理方法,其中,該響應(yīng)函數(shù)是在注冊該自定義事件時已事先預(yù)定的。
全文摘要
一種網(wǎng)頁的用戶自定義事件的處理方法,該方法包括下列步驟:利用一事件生成模塊自一網(wǎng)頁中取得一用戶自定義事件出現(xiàn)的信息;將該取得的用戶自定義事件信息送至一事件注冊管理模塊進(jìn)行注冊處理,其中包括對該用戶自定義事件的添加(register)或刪除(unregister)注冊處理;將該經(jīng)注冊處理的用戶自定義事件經(jīng)由一事件發(fā)送模塊插入該網(wǎng)頁中。
文檔編號G06F9/44GK1369828SQ0110460
公開日2002年9月18日 申請日期2001年2月15日 優(yōu)先權(quán)日2001年2月15日
發(fā)明者陳玄同, 林光信 申請人:英業(yè)達(dá)股份有限公司