新四季網

一種實現前端事件代理的方法及裝置與流程

2023-05-19 01:28:21


本申請涉及計算機技術領域,尤其涉及一種實現前端事件代理的方法及裝置。



背景技術:

網頁,實質是一種超文本編譯語言(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.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、光學存儲器等)上實施的電腦程式產品的形式。

以上所述僅為本申請的實施例而已,並不用於限制本申請。對於本領域技術人員來說,本申請可以有各種更改和變化。凡在本申請的精神和原理之內所作的任何修改、等同替換、改進等,均應包含在本申請的權利要求範圍之內。

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀