本發(fā)明涉及一種WEB客戶端互動(dòng)方法,尤其是一種處理網(wǎng)頁(yè)鼠標(biāo)點(diǎn)擊事件的方法。
背景技術(shù):隨著互聯(lián)網(wǎng)絡(luò)技術(shù)的不斷發(fā)展,網(wǎng)絡(luò)的普及程度越來(lái)越高,而網(wǎng)站作為互聯(lián)網(wǎng)的主要內(nèi)容供應(yīng)者也得到了長(zhǎng)足的發(fā)展。網(wǎng)站不再滿足于僅僅提供統(tǒng)一制式的內(nèi)容而是希望能更多的與用戶互動(dòng)進(jìn)而可以實(shí)現(xiàn)按用戶的需求提供內(nèi)容服務(wù)。通常,現(xiàn)有的網(wǎng)站一般通過(guò)捕獲并處理用戶對(duì)頁(yè)面的操作事件實(shí)現(xiàn)與用戶的互動(dòng),較為流行的做法是采用HTML超文本中對(duì)DOM節(jié)點(diǎn)的事件綁定,HTMLDOM定義了訪問(wèn)和操作HTML文檔的標(biāo)準(zhǔn)方法,HTMLDOM把HTML文檔呈現(xiàn)為帶有元素、屬性和文本的樹(shù)結(jié)構(gòu),在這種DOM樹(shù)結(jié)構(gòu)中,當(dāng)需要頻繁處理頁(yè)面中大量DOM節(jié)點(diǎn)的自定義事件處理時(shí),常用的做法是通過(guò)腳本篩選出需要綁定事件的DOM節(jié)點(diǎn),并通過(guò)循環(huán)的方式為每個(gè)節(jié)點(diǎn)綁定事件處理功能模塊,當(dāng)被綁定的DOM節(jié)點(diǎn)元素被瀏覽器重新渲染加載時(shí),需要再次為其做綁定操作;另一種方法是,通過(guò)定義每個(gè)DOM節(jié)點(diǎn)的屬性,為節(jié)點(diǎn)指定事件處理功能模塊,此種做法雖然能夠改善循環(huán)引起的性能損耗和重新渲染引起的重新綁定,但增加了頁(yè)面元素與處理邏輯的耦合性,為程序的擴(kuò)展和需求變更帶來(lái)麻煩。
技術(shù)實(shí)現(xiàn)要素:針對(duì)現(xiàn)有的DOM事件處理方式存在的上述問(wèn)題,本發(fā)明提供一種利用DOM事件冒泡機(jī)制處理網(wǎng)頁(yè)鼠標(biāo)點(diǎn)擊事件的方法。本發(fā)明解決技術(shù)問(wèn)題所采用的技術(shù)方案為:處理網(wǎng)頁(yè)鼠標(biāo)點(diǎn)擊事件的方法,其中,包括服務(wù)端和客戶端,所述客戶端通過(guò)通訊媒介與所述服務(wù)端連接,具體包括如下步驟;步驟a、所述服務(wù)端向所述客戶端傳送數(shù)據(jù)信號(hào);步驟b、所述客戶端將步驟a中收到的信號(hào)組合成帶有樹(shù)形結(jié)構(gòu)的DOM節(jié)點(diǎn)的超文本文件,所述超文本文件包括與所述樹(shù)形結(jié)構(gòu)的根節(jié)點(diǎn)相連接的根節(jié)點(diǎn)事件監(jiān)聽(tīng)模塊和與所述根節(jié)點(diǎn)事件監(jiān)聽(tīng)模塊相連接的根節(jié)點(diǎn)事件處理模塊,所述根節(jié)點(diǎn)事件處理模塊用于處理部分用戶操作對(duì)應(yīng)的事件;步驟c、所述客戶端以基于超文本協(xié)議并以冒泡機(jī)制處理DOM事件流的瀏覽器解釋并顯示所述超文本文件并接受用戶操作;步驟d、所述根節(jié)點(diǎn)事件監(jiān)聽(tīng)模塊判斷所述用戶操作對(duì)應(yīng)的事件目標(biāo)節(jié)點(diǎn)是否在所述根節(jié)點(diǎn)事件處理模塊的處理范圍內(nèi),并將在所述根節(jié)點(diǎn)事件處理模塊處理范圍內(nèi)的事件發(fā)送至所述根節(jié)點(diǎn)事件處理模塊進(jìn)行處理并退出;步驟e、如所述用戶操作對(duì)應(yīng)的事件目標(biāo)節(jié)點(diǎn)不在所述根節(jié)點(diǎn)事件處理模塊的處理范圍內(nèi)則找到所述目標(biāo)節(jié)點(diǎn),并檢查所述目標(biāo)節(jié)點(diǎn)是否存在對(duì)應(yīng)的節(jié)點(diǎn)事件處理模塊,如存在則將所述用戶操作對(duì)應(yīng)的事件發(fā)送至所述目標(biāo)節(jié)點(diǎn)對(duì)應(yīng)的節(jié)點(diǎn)事件處理模塊進(jìn)行處理并退出。上述處理網(wǎng)頁(yè)鼠標(biāo)點(diǎn)擊事件的方法,其中,于所述步驟e執(zhí)行完畢后如所述目標(biāo)節(jié)點(diǎn)不存在對(duì)應(yīng)的節(jié)點(diǎn)事件處理模塊,則于所述樹(shù)形結(jié)構(gòu)上查找所述目標(biāo)節(jié)點(diǎn)的父節(jié)點(diǎn),并檢查所述目標(biāo)節(jié)的父節(jié)點(diǎn)是否存在對(duì)應(yīng)的節(jié)點(diǎn)事件處理模塊,如存在且所述用戶操作對(duì)應(yīng)的事件在所述目標(biāo)節(jié)點(diǎn)的父節(jié)點(diǎn)對(duì)應(yīng)的節(jié)點(diǎn)事件處理模塊的處理范圍內(nèi)則將所述用戶操作對(duì)應(yīng)的事件發(fā)送至所述目標(biāo)節(jié)點(diǎn)的父節(jié)點(diǎn)對(duì)應(yīng)的節(jié)點(diǎn)事件處理模塊進(jìn)行處理并退出。上述處理網(wǎng)頁(yè)鼠標(biāo)點(diǎn)擊事件的方法,其中,如所述目標(biāo)節(jié)點(diǎn)的父節(jié)點(diǎn)不存在對(duì)應(yīng)的節(jié)點(diǎn)事件處理模塊或者所述用戶操作對(duì)應(yīng)的事件不在所述目標(biāo)節(jié)點(diǎn)的父節(jié)點(diǎn)所對(duì)應(yīng)的節(jié)點(diǎn)事件處理模塊的處理范圍,則于所述樹(shù)形結(jié)構(gòu)上查找所述目標(biāo)節(jié)點(diǎn)的父節(jié)點(diǎn)的父節(jié)點(diǎn),并檢查所述目標(biāo)節(jié)的父節(jié)點(diǎn)的父節(jié)點(diǎn)是否存在對(duì)應(yīng)的節(jié)點(diǎn)事件處理模塊,如存在且所述用戶操作對(duì)應(yīng)的事件在所述目標(biāo)節(jié)點(diǎn)的父節(jié)點(diǎn)的父節(jié)點(diǎn)對(duì)應(yīng)的節(jié)點(diǎn)事件處理模塊的處理范圍內(nèi)則將所述用戶操作對(duì)應(yīng)的事件發(fā)送至所述目標(biāo)節(jié)點(diǎn)的父結(jié)點(diǎn)的父結(jié)點(diǎn)對(duì)應(yīng)的節(jié)點(diǎn)事件處理模塊進(jìn)行處理并退出。上述處理網(wǎng)頁(yè)鼠標(biāo)點(diǎn)擊事件的方法,其中,所述超文本文件中的部分DOM節(jié)點(diǎn)包括與該DOM相連接的節(jié)點(diǎn)事件處理模塊,所述包含節(jié)點(diǎn)事件處理模塊的DOM節(jié)點(diǎn)對(duì)應(yīng)的節(jié)點(diǎn)事件處理模塊用于處理以對(duì)應(yīng)的DOM節(jié)點(diǎn)為目標(biāo)節(jié)點(diǎn)和/或以對(duì)應(yīng)的DOM節(jié)點(diǎn)的子節(jié)點(diǎn)為目標(biāo)節(jié)點(diǎn)和/或以對(duì)應(yīng)的DOM節(jié)點(diǎn)的子節(jié)點(diǎn)的子節(jié)點(diǎn)為目標(biāo)節(jié)點(diǎn)的事件。上述處理網(wǎng)頁(yè)鼠標(biāo)點(diǎn)擊事件的方法,其中,所述超文本文件中的部分DOM節(jié)點(diǎn)包括與該DOM節(jié)點(diǎn)以及該節(jié)點(diǎn)的父節(jié)點(diǎn)相連接的節(jié)點(diǎn)事件監(jiān)聽(tīng)模塊和與所述結(jié)點(diǎn)事件監(jiān)聽(tīng)模塊相連接并與該DOM節(jié)點(diǎn)對(duì)應(yīng)的節(jié)點(diǎn)事件處理模塊;所述節(jié)點(diǎn)事件監(jiān)聽(tīng)模塊用于監(jiān)聽(tīng)以對(duì)應(yīng)的DOM節(jié)點(diǎn)為目標(biāo)節(jié)點(diǎn)的事件并判斷所述事件是否在與該目標(biāo)節(jié)點(diǎn)對(duì)應(yīng)的節(jié)點(diǎn)事件處理模塊的處理范圍內(nèi),將處于目標(biāo)節(jié)點(diǎn)對(duì)應(yīng)的節(jié)點(diǎn)事件處理模塊處理范圍內(nèi)的事件傳送至所述目標(biāo)節(jié)點(diǎn)對(duì)應(yīng)的節(jié)點(diǎn)事件處理模塊處理并終止事件繼續(xù)冒泡。上述處理網(wǎng)頁(yè)鼠標(biāo)點(diǎn)擊事件的方法,其中,所述瀏覽器為IE。上述處理網(wǎng)頁(yè)鼠標(biāo)點(diǎn)擊事件的方法,其中,所述根節(jié)點(diǎn)事件監(jiān)聽(tīng)模塊以及根節(jié)點(diǎn)事件處理模塊主要由嵌入所述超文本文件的腳本形成。上述處理網(wǎng)頁(yè)鼠標(biāo)點(diǎn)擊事件的方法,其中,所述節(jié)點(diǎn)事件處理模塊主要由嵌入所述超文本文件的腳本形成。上述處理網(wǎng)頁(yè)鼠標(biāo)點(diǎn)擊事件的方法,其中,所述節(jié)點(diǎn)事件監(jiān)聽(tīng)模塊以及節(jié)點(diǎn)事件處理模塊主要由嵌入所述超文本文件的腳本形成。本發(fā)明的有益效果是:在根節(jié)點(diǎn)統(tǒng)一攔截DOM事件,一次統(tǒng)一攔截事件發(fā)起目標(biāo)元素,提高了時(shí)間處理的效率,時(shí)間處理模塊統(tǒng)一部署于根節(jié)點(diǎn),重新渲染根節(jié)點(diǎn)內(nèi)元素?zé)o需重新綁定事件,降低了頁(yè)面元素與事件處理邏輯的耦合性,為擴(kuò)展和需求變更帶來(lái)便利。附圖說(shuō)明圖1是本發(fā)明一種處理網(wǎng)頁(yè)鼠標(biāo)點(diǎn)擊事件的方法的流程框圖;圖2是本發(fā)明一種處理網(wǎng)頁(yè)鼠標(biāo)點(diǎn)擊事件的方法的模塊結(jié)構(gòu)圖。具體實(shí)施方式下面結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明作進(jìn)一步說(shuō)明,但不作為本發(fā)明的限定。如圖2所示,本發(fā)明處理網(wǎng)頁(yè)鼠標(biāo)點(diǎn)擊事件的方法,其中,包括服務(wù)端和客戶端,客戶端通過(guò)通訊媒介與服務(wù)端連接,如圖1所示具體包括如下步驟;步驟a、服務(wù)端向客戶端傳送數(shù)據(jù)信號(hào);步驟b、客戶端將步驟a中收到的信號(hào)組合成帶有樹(shù)形結(jié)構(gòu)的DOM節(jié)點(diǎn)的超文本文件,超文本文件包括與樹(shù)形結(jié)構(gòu)的根節(jié)點(diǎn)相連接的根節(jié)點(diǎn)事件監(jiān)聽(tīng)模塊和與根節(jié)點(diǎn)事件監(jiān)聽(tīng)模塊相連接的根節(jié)點(diǎn)事件處理模塊,根節(jié)點(diǎn)事件處理模塊用于處理部分用戶操作對(duì)應(yīng)的事件;步驟c、客戶端以基于超文本協(xié)議并以冒泡機(jī)制處理DOM事件流的瀏覽器解釋并顯示超文本文件并接受用戶操作;步驟d、根節(jié)點(diǎn)事件監(jiān)聽(tīng)模塊判斷用戶操作對(duì)應(yīng)的事件目標(biāo)節(jié)點(diǎn)是否在根節(jié)點(diǎn)事件處理模塊的處理范圍內(nèi),并將在根節(jié)點(diǎn)事件處理模塊處理范圍內(nèi)的事件發(fā)送至根節(jié)點(diǎn)事件處理模塊進(jìn)行處理并退出;步驟e、如用戶操作對(duì)應(yīng)的事件目標(biāo)節(jié)點(diǎn)不在根節(jié)點(diǎn)事件處理模塊的處理范圍內(nèi)則找到目標(biāo)節(jié)點(diǎn),并檢查目標(biāo)節(jié)點(diǎn)是否存在對(duì)應(yīng)的節(jié)點(diǎn)事件處理模塊,如存在則將用戶操作對(duì)應(yīng)的事件發(fā)送至目標(biāo)節(jié)點(diǎn)對(duì)應(yīng)的節(jié)點(diǎn)事件處理模塊進(jìn)行處理并退出。進(jìn)一步的,其中,于步驟e執(zhí)行完畢后如目標(biāo)節(jié)點(diǎn)不存在對(duì)應(yīng)的節(jié)點(diǎn)事件處理模塊,則于樹(shù)形結(jié)構(gòu)上查找目標(biāo)節(jié)點(diǎn)的父節(jié)點(diǎn),并檢查目標(biāo)節(jié)的父節(jié)點(diǎn)是否存在對(duì)應(yīng)的節(jié)點(diǎn)事件處理模塊,如存在且用戶操作對(duì)應(yīng)的事件在目標(biāo)節(jié)點(diǎn)的父節(jié)點(diǎn)對(duì)應(yīng)的節(jié)點(diǎn)事件處理模塊的處理范圍內(nèi)則將用戶操作對(duì)應(yīng)的事件發(fā)送至目標(biāo)節(jié)點(diǎn)的父節(jié)點(diǎn)對(duì)應(yīng)的節(jié)點(diǎn)事件處理模塊進(jìn)行處理并退出。如目標(biāo)節(jié)點(diǎn)的父節(jié)點(diǎn)不存在對(duì)應(yīng)的節(jié)點(diǎn)事件處理模塊或者用戶操作對(duì)應(yīng)的事件不在目標(biāo)節(jié)點(diǎn)的父節(jié)點(diǎn)所對(duì)應(yīng)的節(jié)點(diǎn)事件處理模塊的處理范圍,則于樹(shù)形結(jié)構(gòu)上查找目標(biāo)節(jié)點(diǎn)的父節(jié)點(diǎn)的父節(jié)點(diǎn),并檢查目標(biāo)節(jié)的父節(jié)點(diǎn)的父節(jié)點(diǎn)是否存在對(duì)應(yīng)的節(jié)點(diǎn)事件處理模塊,如存在且用戶操作對(duì)應(yīng)的事件在目標(biāo)節(jié)點(diǎn)的父節(jié)點(diǎn)的父節(jié)點(diǎn)對(duì)應(yīng)的節(jié)點(diǎn)事件處理模塊的處理范圍內(nèi)則將用戶操作對(duì)應(yīng)的事件發(fā)送至目標(biāo)節(jié)點(diǎn)的父結(jié)點(diǎn)的父結(jié)點(diǎn)對(duì)應(yīng)的節(jié)點(diǎn)事件處理模塊進(jìn)行處理并退出。進(jìn)一步的,其中,超文本文件中的部分DOM節(jié)點(diǎn)包括與該DOM相連接的節(jié)點(diǎn)事件處理模塊,包含節(jié)點(diǎn)事件處理模塊的DOM節(jié)點(diǎn)對(duì)應(yīng)的節(jié)點(diǎn)事件處理模塊用于處理以對(duì)應(yīng)的DOM節(jié)點(diǎn)為目標(biāo)節(jié)點(diǎn)和/或以對(duì)應(yīng)的DOM節(jié)點(diǎn)的子節(jié)點(diǎn)為目標(biāo)節(jié)點(diǎn)和/或以對(duì)應(yīng)的DOM節(jié)點(diǎn)的子節(jié)點(diǎn)的子節(jié)點(diǎn)為目標(biāo)節(jié)點(diǎn)的事件?;蛘叱谋疚募械牟糠諨OM節(jié)點(diǎn)包括與該DOM節(jié)點(diǎn)以及該節(jié)點(diǎn)的父節(jié)點(diǎn)相連接的節(jié)點(diǎn)事件監(jiān)聽(tīng)模塊和與結(jié)點(diǎn)事件監(jiān)聽(tīng)模塊相連接并與該DOM節(jié)點(diǎn)對(duì)應(yīng)的節(jié)點(diǎn)事件處理模塊;節(jié)點(diǎn)事件監(jiān)聽(tīng)模塊用于監(jiān)聽(tīng)以對(duì)應(yīng)的DOM節(jié)點(diǎn)為目標(biāo)節(jié)點(diǎn)的事件并判斷事件是否在與該目標(biāo)節(jié)點(diǎn)對(duì)應(yīng)的節(jié)點(diǎn)事件處理模塊的處理范圍內(nèi),將處于目標(biāo)節(jié)點(diǎn)對(duì)應(yīng)的節(jié)點(diǎn)事件處理模塊處理范圍內(nèi)的事件傳送至目標(biāo)節(jié)點(diǎn)對(duì)應(yīng)的節(jié)點(diǎn)事件處理模塊處理并終止事件繼續(xù)冒泡。進(jìn)一步的,其中,瀏覽器可以是IE或者其他支持DOM事件冒泡機(jī)制的瀏覽器如Firefox、Opera和Safari等。進(jìn)一步的,其中,根節(jié)點(diǎn)事件監(jiān)聽(tīng)模塊、根節(jié)點(diǎn)事件處理模塊、節(jié)點(diǎn)事件監(jiān)聽(tīng)模塊以及節(jié)點(diǎn)事件處理模塊主要由嵌入超文本文件的腳本形成,腳本可以是JavaScript腳本或者VBScript腳本?;蛘咭部梢杂赡_本和服務(wù)端功能模塊共同形成根節(jié)點(diǎn)事件監(jiān)聽(tīng)模塊、根節(jié)點(diǎn)事件處理模塊、節(jié)點(diǎn)事件監(jiān)聽(tīng)模塊以及節(jié)點(diǎn)事件處理模塊,這取決于實(shí)際的功能需要。以上所述僅為本發(fā)明較佳的實(shí)施例,并非因此限制本發(fā)明的申請(qǐng)專利范圍,所以凡運(yùn)用本發(fā)明說(shuō)明書(shū)及圖示內(nèi)容所作出的等效結(jié)構(gòu)變化以及本領(lǐng)域技術(shù)人員慣用的手段替換,均包含在本發(fā)明的保護(hù)范圍內(nèi)。