嵌入頁面的客戶端的右鍵菜單的實(shí)現(xiàn)方法和裝置制造方法
【專利摘要】本發(fā)明適用于瀏覽器領(lǐng)域,公開了一種嵌入頁面的客戶端的右鍵菜單的實(shí)現(xiàn)方法和裝置,該方法包括:在瀏覽器引擎中注冊右鍵單擊的監(jiān)聽事件;如果所述客戶端所在的頁面有右鍵單擊事件,獲取所述右鍵單擊事件所對應(yīng)的客戶端的控件及所述右鍵單擊事件的位置信息;根據(jù)預(yù)設(shè)于頁面中的所述客戶端控件與右鍵菜單的對應(yīng)關(guān)系,查找所述右鍵單擊事件對應(yīng)的客戶端控件所對應(yīng)的右鍵菜單;根據(jù)所述右鍵單擊事件的位置信息顯示所述右鍵菜單。通過在頁面中存儲(chǔ)與客戶端控件相應(yīng)的右鍵菜單,根據(jù)右鍵單擊事件對應(yīng)的控件查找相應(yīng)的右鍵菜單,從而實(shí)現(xiàn)對客戶端各控件顯示相應(yīng)的右鍵菜單,使得嵌入頁面的客戶端操作更為方便。
【專利說明】嵌入頁面的客戶端的右鍵菜單的實(shí)現(xiàn)方法和裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于瀏覽器領(lǐng)域,尤其涉及嵌入頁面的客戶端的右鍵菜單的實(shí)現(xiàn)方法和裝置。
【背景技術(shù)】
[0002]Windows圖形界面的出現(xiàn),改變了人們使用電腦的方式。如在客戶端或者網(wǎng)頁等程序的操作過程中,通過鼠標(biāo)或者觸摸手勢對圖形進(jìn)行操作的方式,實(shí)現(xiàn)了更為簡單方便的人機(jī)交互。用戶可以控制鼠標(biāo)的光標(biāo)在顯示界面上移動(dòng),點(diǎn)擊鼠標(biāo)左鍵激活顯示界面上的操作對象完成操作,或者是在界面的操作對象上點(diǎn)擊鼠標(biāo)右鍵,通過彈出的右鍵菜單,可提供多種選擇操作指令執(zhí)行相應(yīng)的操作,使得操作更加方便。
[0003]隨著技術(shù)的發(fā)展,傳統(tǒng)的大客戶端向小型化發(fā)展,出現(xiàn)了內(nèi)嵌于網(wǎng)頁中的瘦客戶端,其通過將其鼠標(biāo)、鍵盤等輸入傳送到服務(wù)器處理,服務(wù)器再把處理結(jié)果回傳至客戶端顯示,可以大大減輕客戶端設(shè)備的計(jì)算量。然而,現(xiàn)有的瀏覽器的頁面的右鍵菜單,一般如圖1所示,瀏覽器在接收到右鍵點(diǎn)擊指令后,根據(jù)點(diǎn)擊對象的屬性信息,調(diào)用瀏覽器中設(shè)定的右鍵菜單,并將該菜單信息在頁面中顯示。使用這種方法可以較好的提高瀏覽器內(nèi)頁面的操作的便利性。但是,對于嵌入頁面的瘦客戶端來說,往往需要更為具體的操作指令,現(xiàn)有的通常做法是通過頁面中的菜單按鈕接收觸發(fā)指令,由于不同的對象所需要的具體操作不盡相同,不能針對具體的對象展現(xiàn)出的相應(yīng)的操作菜單,而且其操作較為麻煩。
【發(fā)明內(nèi)容】
[0004]本發(fā)明實(shí)施例的目的在于提供一種嵌入頁面的客戶端的右鍵菜單的實(shí)現(xiàn)方法和裝置,以解決現(xiàn)有技術(shù)中的嵌入頁面的客戶端不能針對具體的對象展現(xiàn)出相應(yīng)的操作菜單,而且其操作較為麻煩的問題。
[0005]本發(fā)明的進(jìn)一步目的在于,提供一種能夠快速查找操作控件所對應(yīng)的右鍵菜單的嵌入頁面的客戶端的右鍵菜單的實(shí)現(xiàn)方法和裝置。
[0006]本發(fā)明實(shí)施例是這樣實(shí)現(xiàn)的,一種嵌入頁面的客戶端的右鍵菜單的實(shí)現(xiàn)方法,所述方法包括:
[0007]在瀏覽器引擎中注冊右鍵單擊的監(jiān)聽事件,監(jiān)聽所述客戶端所在的頁面是否有右鍵單擊事件;
[0008]如果所述客戶端所在的頁面有右鍵單擊事件,獲取所述右鍵單擊事件所對應(yīng)的客戶端的控件及所述右鍵單擊事件的位置信息;
[0009]根據(jù)預(yù)設(shè)于頁面中的所述客戶端控件與右鍵菜單的對應(yīng)關(guān)系,查找所述右鍵單擊事件對應(yīng)的客戶端控件所對應(yīng)的右鍵菜單;
[0010]根據(jù)所述右鍵單擊事件的位置信息顯示所述右鍵菜單。
[0011]為實(shí)現(xiàn)本發(fā)明的進(jìn)一步目的,所述獲取所述右鍵單擊事件所對應(yīng)的客戶端的控件包括:
[0012]獲取客戶端所在頁面所對應(yīng)的DOM樹,所述DOM樹包括多個(gè)節(jié)點(diǎn);
[0013]查找所述右擊事件所對應(yīng)的控件所對應(yīng)的DOM樹中的節(jié)點(diǎn)的位置;
[0014]判斷所述對應(yīng)的DOM樹中節(jié)點(diǎn)的位置是否設(shè)置有相應(yīng)的右鍵菜單,如果沒有,則查找其父節(jié)點(diǎn)是否設(shè)置有相應(yīng)的右鍵菜單,依此直到查找到設(shè)置有右鍵菜單的節(jié)點(diǎn)。
[0015]本發(fā)明實(shí)施例的另一目的在于提供一種嵌入頁面的客戶端的右鍵菜單的實(shí)現(xiàn)裝置,所述裝置包括:
[0016]第一監(jiān)聽單元,用于在瀏覽器引擎中注冊右鍵單擊的監(jiān)聽事件,監(jiān)聽所述客戶端所在的頁面是否有右鍵單擊事件;
[0017]獲取單元,用于如果所述客戶端所在的頁面有右鍵單擊事件,獲取所述右鍵單擊事件所對應(yīng)的客戶端的控件及所述右鍵單擊事件的位置信息;
[0018]查找單元,用于根據(jù)預(yù)設(shè)于頁面中的所述客戶端控件與右鍵菜單的對應(yīng)關(guān)系,查找所述右鍵單擊事件對應(yīng)的客戶端控件所對應(yīng)的右鍵菜單;
[0019]第一顯示單元,用于根據(jù)所述右鍵單擊事件的位置信息顯示所述右鍵菜單。
[0020]在本發(fā)明中,通過瀏覽器引擎中注冊右鍵單擊的監(jiān)聽事件,在監(jiān)聽到右鍵單擊事件時(shí),得到右鍵單擊事件所對應(yīng)的客戶端控件和右鍵單擊事件的位置信息,根據(jù)所述客戶端控件與右鍵菜單的對應(yīng)關(guān)系,得到相應(yīng)的右鍵菜單,結(jié)合所述右鍵單擊事件的位置信息顯示所述右鍵菜單。和現(xiàn)有技術(shù)相比,本發(fā)明通過在頁面中存儲(chǔ)與客戶端控件相應(yīng)的右鍵菜單,根據(jù)右鍵單擊事件對應(yīng)的控件查找相應(yīng)的右鍵菜單,從而實(shí)現(xiàn)對客戶端各控件顯示相應(yīng)的右鍵菜單,使得嵌入頁面的客戶端操作更為方便。
[0021]進(jìn)一步的,本發(fā)明通過獲取客戶端所在頁面所對應(yīng)的DOM樹,查找右擊事件對應(yīng)的控件所對應(yīng)的DOM樹形中的節(jié)點(diǎn)的位置,判斷所述對應(yīng)的DOM樹中節(jié)點(diǎn)的位置是否設(shè)置有相應(yīng)的右鍵菜單,如果沒有,則查找其父節(jié)點(diǎn)是否設(shè)置有相應(yīng)的右鍵菜單,依此直到查找到設(shè)置有右鍵菜單的節(jié)點(diǎn)。這樣,可以極大的減輕對客戶端過多節(jié)點(diǎn)的右鍵設(shè)置工作,通過結(jié)合DOM樹與控件的對應(yīng)關(guān)系,采用向上查找的方法,查找效率高而且極大的提高編程的工作效率。
【專利附圖】
【附圖說明】
[0022]圖1為本發(fā)明現(xiàn)有技術(shù)中提供的頁面右鍵菜單的示意圖;
[0023]圖2是本發(fā)明第一實(shí)施例提供的嵌入頁面的客戶端的右鍵菜單的實(shí)現(xiàn)方法的實(shí)現(xiàn)流程圖;
[0024]圖3是本發(fā)明第一實(shí)施例提供的頁面右鍵菜單的示意圖;
[0025]圖4是本發(fā)明第二實(shí)施例提供的嵌入頁面的客戶端的右鍵菜單的實(shí)現(xiàn)方法的實(shí)現(xiàn)流程圖;
[0026]圖5為本發(fā)明第三實(shí)施例提供的嵌入頁面的客戶端的右鍵菜單的實(shí)現(xiàn)裝置的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0027]為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0028]瘦客戶端(Thin Client)指的是在客戶端一服務(wù)器網(wǎng)絡(luò)體系中的一個(gè)基本無需應(yīng)用程序的計(jì)算機(jī)終端。它通過一些協(xié)議和服務(wù)器通信,進(jìn)而接入局域網(wǎng)。作為應(yīng)用程序平臺(tái)的Internet的到來為企業(yè)應(yīng)用程序提供了一個(gè)全新的領(lǐng)域:一個(gè)基于Internet/intranet的應(yīng)用程序運(yùn)用一個(gè)只包含一個(gè)瀏覽器的瘦客戶端。這個(gè)瀏覽器負(fù)責(zé)解釋、顯示和處理應(yīng)用程序的圖形用戶界面(GUI)和它的數(shù)據(jù)。這樣的一個(gè)應(yīng)用程序只需要被安裝在一個(gè)Web服務(wù)器上,用戶可以自動(dòng)接收升級(jí)。一個(gè)解決方案只需要部署一次,甚至對成千的用戶也是如此,這種想法的確很實(shí)用,尤其是Internet技術(shù)幫我們緩解了一些傳統(tǒng)的應(yīng)用程序的障礙,比如防火墻和對多平臺(tái)的支持。
[0029]瘦客戶端將其鼠標(biāo)、鍵盤等輸入傳送到服務(wù)器處理,服務(wù)器再把處理結(jié)果回傳至客戶端顯示。不同的客戶端可以同時(shí)登錄到服務(wù)器上,模擬出一個(gè)相互獨(dú)立又在服務(wù)器上的工作環(huán)境。與此相反,普通客戶端會(huì)盡可能多地進(jìn)行本地?cái)?shù)據(jù)處理,與服務(wù)器(或其他客戶端)的通信中只傳送必要的通信數(shù)據(jù)。
[0030]本發(fā)明實(shí)施例所述嵌入頁面的客戶端,即上述的瘦客戶端,可以為嵌入頁面的各種應(yīng)用程序或客戶端,如WEBQQ或者WEB應(yīng)用等。
[0031]本發(fā)明實(shí)施例所述的一種嵌入頁面的客戶端的右鍵菜單的實(shí)現(xiàn)方法,所述方法包括:在瀏覽器引擎中注冊右鍵單擊的監(jiān)聽事件,監(jiān)聽所述客戶端所在的頁面是否有右鍵單擊事件;如果所述客戶端所在的頁面有右鍵單擊事件,獲取所述右鍵單擊事件所對應(yīng)的客戶端的控件及所述右鍵單擊事件的位置信息;根據(jù)預(yù)設(shè)于頁面中的所述客戶端控件與右鍵菜單的對應(yīng)關(guān)系,查找所述右鍵單擊事件對應(yīng)的客戶端控件所對應(yīng)的右鍵菜單;根據(jù)所述右鍵單擊事件的位置信息顯示所述右鍵菜單。
[0032]通過瀏覽器引擎中注冊右鍵單擊的監(jiān)聽事件,在監(jiān)聽到右鍵單擊事件時(shí),得到右鍵單擊事件所對應(yīng)的客戶端控件和右鍵單擊事件的位置信息,根據(jù)所述客戶端控件與右鍵菜單的對應(yīng)關(guān)系,得到相應(yīng)的右鍵菜單,結(jié)合所述右鍵單擊事件的位置信息顯示所述右鍵菜單。和現(xiàn)有技術(shù)相比,本發(fā)明通過在頁面中存儲(chǔ)與客戶端控件相應(yīng)的右鍵菜單,根據(jù)右鍵單擊事件對應(yīng)的控件查找相應(yīng)的右鍵菜單,從而實(shí)現(xiàn)對客戶端各控件顯示相應(yīng)的右鍵菜單,使得嵌入頁面的客戶端操作更為方便。
[0033]實(shí)施例一:
[0034]圖2示出了本發(fā)明第二實(shí)施例提供的嵌入頁面的客戶端的右鍵菜單的實(shí)現(xiàn)方法的實(shí)現(xiàn)流程,詳述如下:
[0035]在步驟S201中,在瀏覽器引擎中注冊右鍵單擊的監(jiān)聽事件,監(jiān)聽所述客戶端所在的頁面是否有右鍵單擊事件。
[0036]具體的,所述瀏覽器可以為不同內(nèi)核的瀏覽器,包括IE內(nèi)核的瀏覽器,如現(xiàn)在的WINDOWS系統(tǒng)自帶的瀏覽器和其它第三方制作的以IE為內(nèi)核的瀏覽器、Ch1me內(nèi)核的谷歌瀏覽器或者webkit內(nèi)核的瀏覽器等。
[0037]所述在瀏覽器引擎中注冊右鍵單擊的監(jiān)聽事件,又稱為訂閱右鍵單擊事件,可以通過監(jiān)聽頁面中的contextmenu (上下文件菜單)事件,實(shí)現(xiàn)對客戶端所在頁面的右鍵單擊事件的監(jiān)聽。
[0038]其中,所述右鍵單擊,可以為鼠標(biāo)的右鍵單擊事件,即MOUSE_RIGHT_CLICK事件,也可以為觸摸屏定義的類似于鼠標(biāo)右鍵單擊事件的指令,如觸摸屏的長按指令等。
[0039]在步驟S202中,如果所述客戶端所在的頁面有右鍵單擊事件,獲取所述右鍵單擊事件所對應(yīng)的客戶端的控件及所述右鍵單擊事件的位置信息。
[0040]在監(jiān)聽到客戶端所在的頁面有右鍵單擊事件,即表示當(dāng)前所述頁面中出現(xiàn)右鍵單擊事件或者類似于右鍵單擊事件的指令,如觸摸屏中的長按指令等。
[0041]所述單擊事件對應(yīng)的客戶端的控件,可以為客戶端的各種對話框或者各個(gè)工具欄等對象。
[0042]通過監(jiān)聽右鍵單擊事件,可以得到事件的clientX、clientY屬性,即右鍵的點(diǎn)擊的位置,所述右鍵的位置信息可以用于定位需要顯示的右鍵菜單,當(dāng)然,也可以將右鍵菜單顯示于某一固定的位置,出于方便操作的考慮,一般將右鍵菜單顯示于所述鼠標(biāo)右鍵單擊的位置處。
[0043]在步驟S203中,根據(jù)預(yù)設(shè)于頁面中的所述客戶端控件與右鍵菜單的對應(yīng)關(guān)系,查找所述右鍵單擊事件對應(yīng)的客戶端控件所對應(yīng)的右鍵菜單。
[0044]所述頁面,即客戶端所在的頁面,在其中設(shè)置有客戶端控件與右鍵菜單的對應(yīng)關(guān)系,該客戶端控件與右鍵菜單的對應(yīng)關(guān)系由客戶端對應(yīng)的服務(wù)器存儲(chǔ)。
[0045]在終端訪問嵌入客戶端的頁面時(shí),從服務(wù)器讀取頁面數(shù)據(jù)進(jìn)行解析排版,得到頁面數(shù)據(jù),客戶端控件與右鍵菜單的對應(yīng)關(guān)系,可由瀏覽器將其數(shù)據(jù)緩存,在監(jiān)聽到右鍵單擊事件時(shí),從緩存的數(shù)據(jù)中讀取右鍵單擊事件所對應(yīng)的客戶端的控件所對應(yīng)的右鍵菜單。
[0046]此處于現(xiàn)有技術(shù)不同之處在于,現(xiàn)有技術(shù)的網(wǎng)頁頁面只能定義簡單的幾種右鍵菜單,而且右鍵菜單的內(nèi)容已經(jīng)固定,而本發(fā)明能夠從服務(wù)器獲取右鍵菜單的定義數(shù)據(jù),可以更為靈活的定義多種菜單,在屏蔽當(dāng)前瀏覽器自帶的右鍵菜單后,所述嵌入頁面的客戶端的右鍵菜單的形式不受瀏覽器自定的右鍵菜單的限定。
[0047]在嵌入客戶端的頁面的某些區(qū)域,其不受所定義的右鍵菜單的影響,可以仍然顯示由瀏覽器自帶的右鍵菜單數(shù)據(jù)進(jìn)行顯示。
[0048]在步驟S204中,根據(jù)所述右鍵單擊事件的位置信息顯示所述右鍵菜單。
[0049]所述右鍵菜單的位置信息,可以由監(jiān)聽事件的函數(shù)直接得到,如上述的contextmenu (上下文菜單)事件監(jiān)聽指令,根據(jù)得到的位置信息,調(diào)取相應(yīng)的右鍵菜單數(shù)據(jù),在所述位置產(chǎn)生一浮層,將右鍵菜單的數(shù)據(jù)于浮層中顯示。
[0050]其中,浮層的大小與右鍵菜單中需要顯示的內(nèi)容相對應(yīng),在定義了每個(gè)命令菜單的長寬數(shù)據(jù)后,整個(gè)浮層的大小即可確定。
[0051]其中,所述浮層中每個(gè)菜單指令,與相應(yīng)的執(zhí)行命令相對應(yīng),在得到用戶的確認(rèn)指令,如左鍵單擊或者鍵盤的確認(rèn)指令后,相應(yīng)的執(zhí)行該菜單所對應(yīng)的指令操作。如圖3為本發(fā)明第一實(shí)施例提供的在嵌入頁面的客戶端的右鍵菜單的效果示意圖,其包括由頁面定義的撤銷、復(fù)制、粘貼、刪除、全部選擇等菜單選項(xiàng),當(dāng)然其只是示意說明,還可以定義更多的操作指令。
[0052]本發(fā)明實(shí)施例通過在頁面中存儲(chǔ)與客戶端控件相應(yīng)的右鍵菜單,根據(jù)右鍵單擊事件對應(yīng)的控件查找相應(yīng)的右鍵菜單,從而實(shí)現(xiàn)對客戶端各控件顯示相應(yīng)的右鍵菜單,使得嵌入頁面的客戶端操作更為方便。
[0053]實(shí)施例二:
[0054]圖4為本發(fā)明第二實(shí)施例提供的嵌入頁面的客戶端的右鍵菜單的實(shí)現(xiàn)方法的實(shí)現(xiàn)流程示意圖,詳述如下:
[0055]在步驟S401中,在瀏覽器引擎中注冊右鍵單擊的監(jiān)聽事件,監(jiān)聽所述客戶端所在的頁面是否有右鍵單擊事件。
[0056]在步驟S402中,獲取客戶端所在頁面所對應(yīng)的DOM樹,所述DOM樹包括多個(gè)節(jié)點(diǎn)。
[0057]其中,所述DOM樹與客戶端所在頁面對應(yīng),DOM樹中的節(jié)點(diǎn)與頁面中的各個(gè)元素、文本相對應(yīng)。
[0058]在步驟S403中,查找所述右擊事件所對應(yīng)的控件所對應(yīng)的DOM樹中的節(jié)點(diǎn)的位置。
[0059]在步驟S404中,判斷所述對應(yīng)的DOM樹中節(jié)點(diǎn)的位置是否設(shè)置有相應(yīng)的右鍵菜單,如果沒有,則查找其父節(jié)點(diǎn)是否設(shè)置有相應(yīng)的右鍵菜單,依此直到查找到設(shè)置有右鍵菜單的節(jié)點(diǎn)。
[0060]在DOM樹中包括多個(gè)節(jié)點(diǎn),并且每個(gè)控件與DOM樹中的節(jié)點(diǎn)相對應(yīng),由于DOM樹中節(jié)點(diǎn)過多,可能部分節(jié)點(diǎn)不需要定義相應(yīng)的右鍵菜單或者某個(gè)樹形節(jié)點(diǎn)中控件的右鍵菜單相同,因此可以根據(jù)DOM定義部分節(jié)點(diǎn)的右鍵菜單,在查找右鍵單擊事件對應(yīng)的控件的右鍵菜單時(shí),如果所述控件對應(yīng)的節(jié)點(diǎn)沒有定義相應(yīng)的右鍵菜單,則向上查找其父節(jié)點(diǎn)是否定義,如果沒有則再向上查找,直到查找到定義有右鍵菜單的節(jié)點(diǎn)為止。
[0061]采用DOM定義節(jié)點(diǎn)的右鍵菜單的目的在于,可以避免對頁面中的客戶端的過多節(jié)點(diǎn)的定義工作,快速的實(shí)現(xiàn)相類似節(jié)點(diǎn)的定義和查找,以提高編程效率和節(jié)約服務(wù)器數(shù)據(jù)空間。
[0062]在步驟S405中,根據(jù)預(yù)設(shè)于頁面中的所述客戶端控件與右鍵菜單的對應(yīng)關(guān)系,查找所述右鍵單擊事件對應(yīng)的客戶端控件所對應(yīng)的右鍵菜單。
[0063]在步驟S406中,根據(jù)所述右鍵單擊事件的位置信息顯示所述右鍵菜單。
[0064]其可具體包括:
[0065]判斷所述右鍵單擊事件的位置信息的右邊區(qū)域是否大于所需要展示的右鍵菜單的寬度;
[0066]如果所述右鍵單擊事件的位置信息的右邊區(qū)域小于所需要展示的右鍵菜單的寬度,則在所述右鍵單擊事件的位置信息的右下角顯示所述右鍵菜單。
[0067]另外,在步驟S406之前,所述方法還可以包括:
[0068]獲取所述控件對應(yīng)的屬性信息。
[0069]根據(jù)所述控制對應(yīng)的屬性信息,判斷所述右鍵菜單中的指令是否可執(zhí)行。
[0070]如果所述右鍵菜單中的指令不可執(zhí)行,則使用灰色菜單顯示所述指令對應(yīng)的菜單。
[0071]如在IE內(nèi)核中,頁面通過document, select1n.createRange O的指令獲取Range (范圍)對象,Range對象的text屬性即為選擇的文字,Webkit內(nèi)核頁面可以通過輸入控件的seclet1nStart, select1nEnd索引知道選擇的內(nèi)容,如果輸入框選擇內(nèi)容為空,將剪切、復(fù)制、刪除按鍵灰色顯示。
[0072]另外,在所述步驟S406之后,所述方法還可包括:
[0073]在步驟S407中,監(jiān)聽當(dāng)前顯示的右鍵菜單是否存在失去焦點(diǎn)事件;
[0074]在步驟S408中,如果當(dāng)前顯示的右鍵菜單存在失去焦點(diǎn)事件,則隱藏所述右鍵菜單。
[0075]其中,所述失去焦點(diǎn)事件包括接收到位于非右鍵菜單區(qū)域單擊事件或者觸摸事件,或者接收到的鍵盤指令事件。
[0076]另外,根據(jù)不同的瀏覽器內(nèi)核,執(zhí)行的操作指令的命令也不相同,因此,在步驟S401之前,還可包括:判斷所述瀏覽器內(nèi)核的類型;在所述根據(jù)所述右鍵單擊事件的位置信息顯示所述右鍵菜單步驟之后,所述方法還包括:接收右鍵菜單選擇指令,根據(jù)所述瀏覽器內(nèi)核的類型,執(zhí)行所述右鍵菜單的指令。
[0077]其中,在IE和和webkit內(nèi)嵌頁面中都可以通過document.execCommand (〃undo〃,false, null);方法實(shí)現(xiàn)輸入框的撤銷操作。
[0078]剪切在IE和webkit內(nèi)嵌頁面中都可以通過調(diào)用document.execCommand (〃cut〃);方法實(shí)現(xiàn)。
[0079]IE 內(nèi)核的頁面可以通過 window.clipboardData.setData (〃Text〃,text)方法將選擇內(nèi)容復(fù)制到系統(tǒng)剪貼板。webkit內(nèi)核的頁面卻沒有這個(gè)方法,但是可以通過document.execCommand ("copy")方法實(shí)現(xiàn)復(fù)制。
[0080]粘貼在IE和webkit內(nèi)嵌頁面中都可以通過調(diào)用document.execCommand ("paste", false, null)方法實(shí)現(xiàn)。
[0081]IE內(nèi)核頁面的全選需要調(diào)用輸入框控件的createTextRange方法獲得一個(gè)TextRange對象,調(diào)用該對象的range, select O方法可以實(shí)現(xiàn)輸入框內(nèi)容的全選。Webkit內(nèi)核的頁面則是通過設(shè)置輸入框控件的select1nStart屬性為O和select1nEnd屬性為最大值實(shí)現(xiàn)。
[0082]IE 內(nèi)核和 Webkit 內(nèi)核可以簡單的調(diào)用 document.execCommand(〃delete〃,false,null);方法實(shí)現(xiàn)選擇文字的刪除。
[0083]本發(fā)明實(shí)施例通過獲取客戶端所在頁面所對應(yīng)的DOM樹,查找右擊事件對應(yīng)的控件所對應(yīng)的DOM樹形中的節(jié)點(diǎn)的位置,判斷所述對應(yīng)的DOM樹中節(jié)點(diǎn)的位置是否設(shè)置有相應(yīng)的右鍵菜單,如果沒有,則查找其父節(jié)點(diǎn)是否設(shè)置有相應(yīng)的右鍵菜單,依此直到查找到設(shè)置有右鍵菜單的節(jié)點(diǎn)。這樣,可以極大的減輕對客戶端過多節(jié)點(diǎn)的右鍵設(shè)置工作,通過結(jié)合DOM樹與控件的對應(yīng)關(guān)系,采用向上查找的方法,查找效率高而且極大的提高編程的工作效率。
[0084]實(shí)施例三:
[0085]圖5這本發(fā)明第三實(shí)施例提供的嵌入頁面的客戶端的右鍵菜單的實(shí)現(xiàn)裝置的結(jié)構(gòu)示意圖,詳述如下:
[0086]本發(fā)明實(shí)施例所述嵌入頁面的客戶端的右鍵菜單的實(shí)現(xiàn)裝置,包括:
[0087]第一監(jiān)聽單元501,用于在瀏覽器引擎中注冊右鍵單擊的監(jiān)聽事件,監(jiān)聽所述客戶端所在的頁面是否有右鍵單擊事件;
[0088]獲取單元502,用于如果所述客戶端所在的頁面有右鍵單擊事件,獲取所述右鍵單擊事件所對應(yīng)的客戶端的控件及所述右鍵單擊事件的位置信息;
[0089]查找單元503,用于根據(jù)預(yù)設(shè)于頁面中的所述客戶端控件與右鍵菜單的對應(yīng)關(guān)系,查找所述右鍵單擊事件對應(yīng)的客戶端控件所對應(yīng)的右鍵菜單;
[0090]第一顯示單元504,用于根據(jù)所述右鍵單擊事件的位置信息顯示所述右鍵菜單。
[0091]為提高查找效率和提高編程的工作效率,所述第一監(jiān)聽單元501包括:
[0092]第一獲取子單元5011,用于獲取客戶端所在頁面所對應(yīng)的DOM樹,所述DOM樹包括多個(gè)節(jié)點(diǎn);
[0093]第一查找子單元5012,用于查找所述右擊事件所對應(yīng)的控件所對應(yīng)的DOM樹中的節(jié)點(diǎn)的位置;
[0094]判斷查找子單元5013,判斷所述對應(yīng)的DOM樹中節(jié)點(diǎn)的位置是否設(shè)置有相應(yīng)的右鍵菜單,如果沒有,則查找其父節(jié)點(diǎn)是否設(shè)置有相應(yīng)的右鍵菜單,依此直到查找到設(shè)置有右鍵菜單的節(jié)點(diǎn)。
[0095]為提高顯示的有效性,所述裝置還可包括:
[0096]第二獲取單元505,用于獲取所述控件對應(yīng)的屬性信息;
[0097]判斷單元506,用于根據(jù)所述控制對應(yīng)的屬性信息,判斷所述右鍵菜單中的指令是否可執(zhí)行;
[0098]第二顯示單元507,用于如果所述右鍵菜單中的指令不可執(zhí)行,則使用灰色菜單顯示所述指令對應(yīng)的菜單。
[0099]第二監(jiān)聽單元508,用于監(jiān)聽當(dāng)前顯示的右鍵菜單是否存在失去焦點(diǎn)事件;
[0100]隱藏單元509,用于如果當(dāng)前顯示的右鍵菜單存在失去焦點(diǎn)事件,則隱藏所述右鍵菜單。
[0101]所述失去焦點(diǎn)事件包括接收到位于非右鍵菜單區(qū)域單擊事件或者觸摸事件,或者接收到的鍵盤指令事件。
[0102]本發(fā)明實(shí)施例所述裝置與實(shí)施例一和實(shí)施例二所述方法相對應(yīng),在此不作重復(fù)贅述。
[0103]以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種嵌入頁面的客戶端的右鍵菜單的實(shí)現(xiàn)方法,其特征在于,所述方法包括: 在瀏覽器引擎中注冊右鍵單擊的監(jiān)聽事件,監(jiān)聽所述客戶端所在的頁面是否有右鍵單擊事件; 如果所述客戶端所在的頁面有右鍵單擊事件,獲取所述右鍵單擊事件所對應(yīng)的客戶端的控件及所述右鍵單擊事件的位置信息; 根據(jù)預(yù)設(shè)于頁面中的所述客戶端控件與右鍵菜單的對應(yīng)關(guān)系,查找所述右鍵單擊事件對應(yīng)的客戶端控件所對應(yīng)的右鍵菜單; 根據(jù)所述右鍵單擊事件的位置信息顯示所述右鍵菜單。
2.根據(jù)權(quán)利要求1所述方法,其特征在于,所述獲取所述右鍵單擊事件所對應(yīng)的客戶端的控件包括: 獲取客戶端所在頁面所對應(yīng)的DOM樹,所述DOM樹包括多個(gè)節(jié)點(diǎn); 查找所述右擊事件所對應(yīng)的控件所對應(yīng)的DOM樹中的節(jié)點(diǎn)的位置; 判斷所述對應(yīng)的DOM樹中節(jié)點(diǎn)的位置是否設(shè)置有相應(yīng)的右鍵菜單,如果沒有,則查找其父節(jié)點(diǎn)是否設(shè)置有相應(yīng)的右鍵菜單,依此直到查找到設(shè)置有右鍵菜單的節(jié)點(diǎn)。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,在所述根據(jù)所述右鍵單擊事件的位置信息顯示所述右鍵菜單步驟之前,所述方法還包括: 獲取所述控件對應(yīng)的屬性信息; 根據(jù)所述控制對應(yīng)的屬性信息,判斷所述右鍵菜單中的指令是否可執(zhí)行; 如果所述右鍵菜單中的指令不可執(zhí)行,則使用灰色菜單顯示所述指令對應(yīng)的菜單。
4.根據(jù)權(quán)利要求1所述方法,其特征在于,在所述根據(jù)所述右鍵單擊事件的位置信息顯示所述右鍵菜單步驟之后,所述方法還包括: 監(jiān)聽當(dāng)前顯示的右鍵菜單是否存在失去焦點(diǎn)事件; 如果當(dāng)前顯示的右鍵菜單存在失去焦點(diǎn)事件,則隱藏所述右鍵菜單。
5.根據(jù)權(quán)利要求4所述方法,其特征在于,所述失去焦點(diǎn)事件包括接收到位于非右鍵菜單區(qū)域單擊事件或者觸摸事件,或者接收到的鍵盤指令事件。
6.根據(jù)權(quán)利要求1所述方法,其特征在于,在所述在瀏覽器引擎中注冊右鍵單擊的監(jiān)聽事件,監(jiān)聽所述客戶端所在的頁面是否有右鍵單擊事件步驟之前,所述方法還包括: 判斷所述瀏覽器內(nèi)核的類型; 在所述根據(jù)所述右鍵單擊事件的位置信息顯示所述右鍵菜單步驟之后,所述方法還包括:接收右鍵菜單選擇指令,根據(jù)所述瀏覽器內(nèi)核的類型,執(zhí)行所述右鍵菜單的指令。
7.根據(jù)權(quán)利要求1所述方法,其特征在于,所述根據(jù)所述右鍵單擊事件的位置信息顯示所述右鍵菜單步驟包括: 判斷所述右鍵單擊事件的位置信息的右邊區(qū)域是否大于所需要展示的右鍵菜單的寬度; 如果所述右鍵單擊事件的位置信息的右邊區(qū)域小于所需要展示的右鍵菜單的寬度,則在所述右鍵單擊事件的位置信息的右下角顯示所述右鍵菜單。
8.一種嵌入頁面的客戶端的右鍵菜單的實(shí)現(xiàn)裝置,其特征在于,所述裝置包括: 第一監(jiān)聽單元,用于在瀏覽器引擎中注冊右鍵單擊的監(jiān)聽事件,監(jiān)聽所述客戶端所在的頁面是否有右鍵單擊事件; 獲取單元,用于如果所述客戶端所在的頁面有右鍵單擊事件,獲取所述右鍵單擊事件所對應(yīng)的客戶端的控件及所述右鍵單擊事件的位置信息; 查找單元,用于根據(jù)預(yù)設(shè)于頁面中的所述客戶端控件與右鍵菜單的對應(yīng)關(guān)系,查找所述右鍵單擊事件對應(yīng)的客戶端控件所對應(yīng)的右鍵菜單; 第一顯示單元,用于根據(jù)所述右鍵單擊事件的位置信息顯示所述右鍵菜單。
9.根據(jù)權(quán)利要求8所述裝置,其特征在于,所述第一監(jiān)聽單元包括: 第一獲取子單元,用于獲取客戶端所在頁面所對應(yīng)的DOM樹,所述DOM樹包括多個(gè)節(jié)占.第一查找子單元,用于查找所述右擊事件所對應(yīng)的控件所對應(yīng)的DOM樹中的節(jié)點(diǎn)的位置; 判斷查找子單元,判斷所述對應(yīng)的DOM樹中節(jié)點(diǎn)的位置是否設(shè)置有相應(yīng)的右鍵菜單,如果沒有,則查找其父節(jié)點(diǎn)是否設(shè)置有相應(yīng)的右鍵菜單,依此直到查找到設(shè)置有右鍵菜單的節(jié)點(diǎn)。
10.根據(jù)權(quán)利要求8所述裝置,其特征在于,所述裝置還包括: 第二獲取單元,用于獲取所述控件對應(yīng)的屬性信息; 判斷單元,用于根據(jù)所述控制對應(yīng)的屬性信息,判斷所述右鍵菜單中的指令是否可執(zhí)行; 第二顯示單元,用于如果所述右鍵菜單中的指令不可執(zhí)行,則使用灰色菜單顯示所述指令對應(yīng)的菜單。
【文檔編號(hào)】G06F17/30GK104424205SQ201310367754
【公開日】2015年3月18日 申請日期:2013年8月21日 優(yōu)先權(quán)日:2013年8月21日
【發(fā)明者】郭力恒 申請人:騰訊科技(深圳)有限公司