本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種操作HTML頁(yè)面宿主窗口的方法和裝置。
背景技術(shù):超文本標(biāo)記語(yǔ)言(HypertextMarkupLanguage,HTML),是用于描述網(wǎng)頁(yè)文檔的一種標(biāo)記語(yǔ)言。網(wǎng)頁(yè)文檔本身是一種文本文件,采用HTML描述網(wǎng)頁(yè)文檔內(nèi)容,具體通過(guò)在文本文件中添加HTML標(biāo)簽,可以告訴瀏覽器如何顯示網(wǎng)頁(yè)文檔中的內(nèi)容例如,文字如何處理,畫面如何安排,圖片如何顯示等。采用HTML描述的網(wǎng)頁(yè)文檔內(nèi)容,也可以稱為HTML頁(yè)面內(nèi)容。瀏覽器按順序閱讀采用HTML描述的網(wǎng)頁(yè)文檔內(nèi)容,即HTML頁(yè)面內(nèi)容,然后根據(jù)HTML標(biāo)簽解釋和顯示相應(yīng)的內(nèi)容。其中,HTML標(biāo)簽是HTML結(jié)構(gòu)上的最小元素單元,每個(gè)HTML標(biāo)簽對(duì)應(yīng)HTML頁(yè)面內(nèi)容的DOM樹(shù)中的一個(gè)節(jié)點(diǎn),其中的節(jié)點(diǎn),是根據(jù)HTML頁(yè)面內(nèi)容中標(biāo)簽的父子關(guān)系而生成的DOM樹(shù)中的最小單元。瀏覽器為了展示HTML頁(yè)面內(nèi)容,而生成的用于展示HTML頁(yè)面內(nèi)容的窗口,可以稱為該HTML頁(yè)面的宿主窗口。要實(shí)現(xiàn)通過(guò)宿主窗口瀏覽HTML頁(yè)面內(nèi)容,常常需要對(duì)操作宿主窗口進(jìn)行操作,例如,對(duì)宿主窗口的長(zhǎng)度、高度、是否可以最大化等屬性進(jìn)行配置,拖動(dòng)宿主窗口,彈出菜單等。按照操作類型的不同,對(duì)HTML頁(yè)面宿主窗口的操作可以包括操作HTML頁(yè)面宿主窗口的屬性,拖動(dòng)HTML頁(yè)面宿主窗口,在HTML頁(yè)面宿主窗口中彈出菜單等。目前,對(duì)HTML頁(yè)面宿主窗口進(jìn)行上述操作的方法包括:操作HTML頁(yè)面宿主窗口的屬性的方法為:瀏覽器首先打開(kāi)一個(gè)長(zhǎng)度和高度不可控的臨時(shí)頁(yè)面窗口,在該臨時(shí)頁(yè)面內(nèi)調(diào)用javascript的window.open()這個(gè)應(yīng)用程序接口(API),彈出一個(gè)長(zhǎng)高可控的新窗口,然后關(guān)閉這個(gè)臨時(shí)頁(yè)面窗口。window.open()這個(gè)API可以配置新窗口的位置、長(zhǎng)度、高度、是否使用滾動(dòng)條、是否能改變窗口大小等少量窗口屬性。拖動(dòng)HTML頁(yè)面宿主窗口的方法為:通過(guò)javascript監(jiān)聽(tīng)鼠標(biāo)事件,用鼠標(biāo)事件產(chǎn)生的坐標(biāo)計(jì)算出窗口應(yīng)產(chǎn)生的位移,再利用javascript的API接口改變宿主窗口的坐標(biāo)位置。在HTML頁(yè)面宿主窗口中彈出菜單的方法為:通過(guò)產(chǎn)生鼠標(biāo)事件,判斷產(chǎn)生該鼠標(biāo)事件所在位置下的HTML標(biāo)簽類型,根據(jù)HTML標(biāo)簽類型配置菜單項(xiàng),即配置需要顯示的菜單內(nèi)容,然后使用API接口TrackPopupMenu彈出對(duì)應(yīng)的菜單內(nèi)容。其中,由于菜單內(nèi)容是由API接口TrackPopupMenu彈出的,而用戶對(duì)菜單選項(xiàng)的選擇消息會(huì)反饋到處理這個(gè)菜單消息的窗口過(guò)程中,因此,如果想增加菜單項(xiàng)或者改變菜單項(xiàng),必須修改源代碼中的窗口過(guò)程,進(jìn)而導(dǎo)致需要用戶升級(jí)瀏覽器客戶端??梢?jiàn),目前對(duì)HTML頁(yè)面宿主窗口進(jìn)行上述操作的方法,均是通過(guò)javascript的API接口實(shí)現(xiàn)的。通過(guò)javascript的API接口對(duì)HTML頁(yè)面宿主窗口進(jìn)行操作,其操作效果通常較差,例如:操作HTML頁(yè)面宿主窗口的屬性時(shí),臨時(shí)頁(yè)面窗口的打開(kāi)和迅速關(guān)閉,會(huì)導(dǎo)致屏幕的局部閃爍,并且,通過(guò)調(diào)用javascript的window.open()來(lái)配置新窗口的屬性時(shí),能夠配置的屬性也較少。再例如,通過(guò)監(jiān)聽(tīng)鼠標(biāo)事件拖動(dòng)HTML頁(yè)面宿主窗口時(shí),由于網(wǎng)頁(yè)上的鼠標(biāo)事件容易丟失,因此會(huì)引起HTML頁(yè)面宿主窗口的拖動(dòng)不夠流暢,拖動(dòng)效果較差。又例如,當(dāng)使用API接口TrackPopupMenu彈出菜單內(nèi)容時(shí),由于用戶對(duì)菜單選項(xiàng)的選擇消息會(huì)反饋到處理這個(gè)菜單消息的窗口過(guò)程中,因此,如果想增加菜單項(xiàng)或者改變菜單項(xiàng),必須修改源代碼中的窗口過(guò)程,進(jìn)而導(dǎo)致需要用戶升級(jí)瀏覽器客戶端,因此彈出菜單內(nèi)容的靈活性較差。因此,有必要提出一種技術(shù)方案,以解決通過(guò)javascript的API接口對(duì)HTML頁(yè)面宿主窗口進(jìn)行操作時(shí),操作效果較差的技術(shù)問(wèn)題。
技術(shù)實(shí)現(xiàn)要素:有鑒于此,本發(fā)明提供了一種操作HTML頁(yè)面宿主窗口的方法和裝置,以便改善對(duì)HTML頁(yè)面宿主窗口的操作效果。本發(fā)明的技術(shù)方案具體是這樣實(shí)現(xiàn)的:一種操作HTML頁(yè)面宿主窗口的方法,該方法包括:識(shí)別HTML頁(yè)面內(nèi)容中用于操作宿主窗口的HTML標(biāo)簽,讀取用于操作宿主窗口的HTML標(biāo)簽的屬性值,根據(jù)讀取的用于操作宿主窗口的HTML標(biāo)簽的屬性值,對(duì)宿主窗口執(zhí)行相應(yīng)的操作??梢?jiàn),本發(fā)明在HTML頁(yè)面內(nèi)容中增加了用于操作宿主窗口的HTML標(biāo)簽,根據(jù)識(shí)別出的用于操作宿主窗口的HTML標(biāo)簽的類型和屬性值,對(duì)宿主窗口執(zhí)行相應(yīng)的操作,突破了現(xiàn)有技術(shù)中HTML結(jié)構(gòu)僅僅關(guān)注于對(duì)網(wǎng)頁(yè)內(nèi)容本身的描述,HTML結(jié)構(gòu)與宿主窗口之間不存在聯(lián)系,對(duì)于宿主窗口的操作,完全由javascript的API接口來(lái)實(shí)現(xiàn)的思路,從而解決了由于采用javascript的API接口來(lái)操作HTML頁(yè)面宿主窗口而帶來(lái)的效果較差的問(wèn)題,通過(guò)直接根據(jù)用于操作宿主窗口的HTML標(biāo)簽的類型和屬性值,對(duì)宿主窗口執(zhí)行相應(yīng)的操作,能夠改善對(duì)HTML頁(yè)面宿主窗口進(jìn)行操作的效果。附圖說(shuō)明圖1是本發(fā)明提供的操作HTML頁(yè)面宿主窗口的方法流程圖。圖2是本發(fā)明提供的根據(jù)用于配置宿主窗口屬性的標(biāo)簽配置窗口屬性的流程圖。圖3是本發(fā)明根據(jù)用于拖動(dòng)宿主窗口的標(biāo)簽拖動(dòng)宿主窗口的流程圖。圖4是本發(fā)明根據(jù)用于彈出菜單內(nèi)容的標(biāo)簽彈出菜單內(nèi)容的流程圖。圖5是本發(fā)明提供的根據(jù)菜單頁(yè)面的HTML頁(yè)面內(nèi)容顯示菜單內(nèi)容的方法流程圖。圖6是本發(fā)明提供的操作HTML頁(yè)面宿主窗口的裝置結(jié)構(gòu)圖。具體實(shí)施方式圖1是本發(fā)明提供的操作HTML頁(yè)面宿主窗口的方法流程圖。如圖1所示,該方法包括:步驟101,識(shí)別HTML頁(yè)面內(nèi)容中用于操作宿主窗口的HTML標(biāo)簽。步驟102,讀取用于操作宿主窗口的HTML標(biāo)簽的屬性值。步驟103,根據(jù)讀取的用于操作宿主窗口的HTML標(biāo)簽的屬性值,對(duì)宿主窗口執(zhí)行相應(yīng)的操作。可見(jiàn),本發(fā)明通過(guò)在HTML頁(yè)面內(nèi)容中增加用于操作宿主窗口的HTML標(biāo)簽,根據(jù)識(shí)別出的用于操作宿主窗口的HTML標(biāo)簽的類型和屬性值,對(duì)宿主窗口執(zhí)行相應(yīng)的操作,突破了現(xiàn)有技術(shù)中HTML結(jié)構(gòu)僅僅關(guān)注于對(duì)網(wǎng)頁(yè)內(nèi)容本身的描述,HTML結(jié)構(gòu)與宿主窗口之間不存在聯(lián)系,對(duì)于宿主窗口的操作,完全由javascript的API接口來(lái)實(shí)現(xiàn)的思路,通過(guò)直接根據(jù)用于操作宿主窗口的HTML標(biāo)簽的類型和屬性值,對(duì)宿主窗口執(zhí)行相應(yīng)的操作,能夠改善對(duì)HTML頁(yè)面宿主窗口進(jìn)行操作的效果。根據(jù)對(duì)宿主窗口執(zhí)行的操作的不同,可以在HTML頁(yè)面內(nèi)容中設(shè)置不同類型的用于操作宿主窗口的HTML標(biāo)簽,在HTML頁(yè)面內(nèi)容中可以僅設(shè)置一種用于操作宿主窗口的標(biāo)簽,也可以設(shè)置兩種以上用于操作宿主窗口的標(biāo)簽,例如,在HTML頁(yè)面內(nèi)容中設(shè)置的用于操作宿主窗口的HTML標(biāo)簽,可以包括但不限于,用于配置宿主窗口屬性的標(biāo)簽、用于拖動(dòng)宿主窗口的標(biāo)簽、和/或用于彈出菜單內(nèi)容的標(biāo)簽。下面分別對(duì)根據(jù)用于配置宿主窗口屬性的標(biāo)簽配置宿主窗口屬性的流程、根據(jù)用于拖動(dòng)宿主窗口的標(biāo)簽拖動(dòng)宿主窗口的流程、以及根據(jù)用于彈出菜單內(nèi)容的標(biāo)簽彈出菜單內(nèi)容的流程進(jìn)行介紹,具體請(qǐng)參見(jiàn)圖2-圖4。圖2是本發(fā)明提供的根據(jù)用于配置宿主窗口屬性的標(biāo)簽配置窗口屬性的流程圖。如圖2所示,該流程包括:步驟201,生成宿主窗口并隱藏該宿主窗口。步驟202,讀取HTML頁(yè)面內(nèi)容并生成DOM樹(shù)。步驟203,在所述DOM樹(shù)生成完畢以后,根據(jù)DOM樹(shù)的接口,識(shí)別用于配置宿主窗口屬性的標(biāo)簽。步驟204,獲取該用于配置宿主窗口屬性的標(biāo)簽的屬性值,保存所述屬性值。步驟205,根據(jù)保存的所述屬性值,對(duì)隱藏的所述宿主窗口的屬性進(jìn)行配置。步驟206,顯示配置后的宿主窗口。本步驟中,可以在配置后的宿主窗口中渲染HTML頁(yè)面內(nèi)容,從而顯示HTML頁(yè)面??梢?jiàn),在圖2所示方法中,先生成宿主窗口并隱藏,然后根據(jù)讀取的用于配置宿主屬性的標(biāo)簽的屬性值,直接對(duì)該隱藏的宿主窗口進(jìn)行屬性配置,并顯示配置后的宿主窗口,由于自始至終都是一個(gè)宿主窗口,并且宿主窗口在屬性配置完畢之前都處于隱藏狀態(tài),因此不會(huì)出現(xiàn)屏幕局部閃爍的現(xiàn)象,與現(xiàn)有技術(shù)中需要先生成臨時(shí)頁(yè)面窗口,然后再利用臨時(shí)頁(yè)面窗口生成預(yù)定配置的窗口相比,效果更好。另外,由于在用于配置宿主窗口屬性的標(biāo)簽中,可以設(shè)置宿主窗口的各種屬性,與現(xiàn)有技術(shù)中通過(guò)調(diào)用javascript的window.open()來(lái)配置新窗口的屬性時(shí),只能配置新窗口的部分屬性相比,可配置的屬性增多,宿主窗口屬性配置變得更加靈活。圖3是本發(fā)明根據(jù)用于拖動(dòng)宿主窗口的標(biāo)簽拖動(dòng)宿主窗口的流程圖。如圖3所示,該流程包括:步驟301,在宿主窗口中捕獲產(chǎn)生鼠標(biāo)事件或觸摸事件的信息。本步驟中,對(duì)于Windows操作系統(tǒng),典型地,可以捕獲WM_NCHITTEST消息。步驟302,確定產(chǎn)生該鼠標(biāo)事件或觸摸事件的坐標(biāo)位置。步驟303,識(shí)別該坐標(biāo)位置下DOM節(jié)點(diǎn)的HTML標(biāo)簽是否為用于拖動(dòng)宿主窗口的標(biāo)簽,如果是,執(zhí)行步驟306,否則,執(zhí)行步驟304。步驟304,繼續(xù)向上查找上一級(jí)父節(jié)點(diǎn),確定該上一級(jí)父節(jié)點(diǎn)的HTML標(biāo)簽是否為用于拖動(dòng)宿主窗口的標(biāo)簽,如果是,執(zhí)行步驟306,否則,執(zhí)行步驟305。步驟305,判斷該上一級(jí)父節(jié)點(diǎn)是否為根節(jié)點(diǎn),如果是,結(jié)束本流程,否則,返回步驟304。步驟306,判斷該用于拖動(dòng)宿主窗口的標(biāo)簽的屬性值是否為允許拖動(dòng)的屬性值,如果是,執(zhí)行步驟307,否則,執(zhí)行步驟308。步驟307,觸發(fā)將發(fā)生該鼠標(biāo)事件或觸摸事件的位置作為由操作系統(tǒng)自身來(lái)處理的區(qū)域進(jìn)行處理的操作。本步驟中,對(duì)于Windows操作系統(tǒng),典型地,可以觸發(fā)針對(duì)所述WM_NCHITTEST消息返回HTCAPTION消息的操作。步驟308,觸發(fā)將發(fā)生該鼠標(biāo)事件或觸摸事件的位置作為由HTML頁(yè)面內(nèi)容設(shè)計(jì)者來(lái)處理的區(qū)域進(jìn)行處理的操作。本步驟中,對(duì)于Windows操作系統(tǒng),典型地,可以觸發(fā)針對(duì)所述WM_NCHITTEST消息返回HTCLIENT消息的操作。其中,WM_NCHITTEST消息、HTCAPTION消息和HTCLIENT消息是Windows操作系統(tǒng)的系統(tǒng)消息。具體地,在Windows操作系統(tǒng)中,當(dāng)有鼠標(biāo)事件產(chǎn)生時(shí),例如鼠標(biāo)移動(dòng)或點(diǎn)擊時(shí),或者對(duì)于帶有觸摸屏的設(shè)備,當(dāng)有觸摸事件產(chǎn)生時(shí),例如,發(fā)生接觸式的點(diǎn)擊事件或者接近式的點(diǎn)擊事件時(shí),就會(huì)產(chǎn)生WM_NCHITTEST消息,而當(dāng)針對(duì)某一位置的WM_NCHITTEST消息返回HTCAPTION消息時(shí),則表示將該位置作為標(biāo)題欄區(qū)域,即作為系統(tǒng)區(qū)域,標(biāo)題欄區(qū)域的點(diǎn)擊和拖拽操作,都是由操作系統(tǒng)來(lái)執(zhí)行,當(dāng)針對(duì)某一位置的WM_NCHITTEST消息返回HTCLIENT消息時(shí),表示將該位置作為用戶自己處理的區(qū)域,即由HTML頁(yè)面內(nèi)容的設(shè)計(jì)者進(jìn)行處理??梢?jiàn),通過(guò)圖3所示方法,通過(guò)在HTML頁(yè)面內(nèi)容中添加用于拖動(dòng)宿主窗口的標(biāo)簽,當(dāng)識(shí)別出產(chǎn)生鼠標(biāo)事件或觸摸事件的位置上的HTML標(biāo)簽是用于拖動(dòng)宿主窗口的標(biāo)簽,且該標(biāo)簽的屬性值是允許拖動(dòng)時(shí),觸發(fā)將發(fā)生該鼠標(biāo)事件或觸摸事件的位置作為由操作系統(tǒng)自身來(lái)處理的區(qū)域進(jìn)行處理的操作,例如返回HTCAPTION消息,能夠?qū)崿F(xiàn)通過(guò)觸發(fā)將發(fā)生該鼠標(biāo)事件或觸摸事件的位置作為由操作系統(tǒng)自身來(lái)處理的區(qū)域進(jìn)行處理的操作,例如通過(guò)返回操作系統(tǒng)的HTCAPTION消息,而使得操作系統(tǒng)能夠處理宿主窗口的拖動(dòng)操作,使得對(duì)宿主窗口的拖動(dòng)變得更加流暢,與現(xiàn)有技術(shù)中需要由HTML頁(yè)面內(nèi)容的設(shè)計(jì)者利用javascript的API接口來(lái)對(duì)宿主窗口進(jìn)行拖動(dòng)相比,能夠顯著改善拖動(dòng)效果。圖4是本發(fā)明根據(jù)用于彈出菜單內(nèi)容的標(biāo)簽彈出菜單內(nèi)容的流程圖。步驟401,接收菜單彈出命令。步驟402,生成用于顯示菜單內(nèi)容的容器對(duì)象。步驟401和步驟402的順序可以根據(jù)需要調(diào)整,即可以先接收菜單彈出命令,再生成用于顯示菜單內(nèi)容的容器對(duì)象,也可以先生成用于顯示菜單內(nèi)容的容器對(duì)象,然后再接收菜單彈出命令,并根據(jù)菜單彈出命令執(zhí)行后續(xù)步驟,即步驟403以后的步驟。一般地,出于對(duì)性能的考慮,可以在接收到菜單彈出命令以后,再生成用于顯示菜單內(nèi)容的容器。步驟403,確定產(chǎn)生該菜單彈出命令的坐標(biāo)位置。步驟404,識(shí)別該坐標(biāo)位置下DOM節(jié)點(diǎn)的HTML標(biāo)簽是否為用于彈出菜單內(nèi)容的標(biāo)簽,如果是,執(zhí)行步驟407,否則,執(zhí)行步驟405。步驟405,繼續(xù)向上查找上一級(jí)父節(jié)點(diǎn),確定該上一級(jí)父節(jié)點(diǎn)的HTML標(biāo)簽是否為用于彈出菜單內(nèi)容的標(biāo)簽,如果是,執(zhí)行步驟407,否則,執(zhí)行步驟406。步驟406,判斷該上一級(jí)父節(jié)點(diǎn)是否是根節(jié)點(diǎn),如果是,結(jié)束本流程,否則,返回步驟405。步驟407,將所述用于彈出菜單內(nèi)容的標(biāo)簽的屬性值,傳給所述用于展示菜單內(nèi)容的容器對(duì)象。步驟408,所述容器對(duì)象判斷所述用于彈出菜單內(nèi)容的標(biāo)簽的屬性值是否為不彈出菜單內(nèi)容的屬性值,如果是,執(zhí)行步驟409,否則,執(zhí)行步驟410。其中,典型地,不彈出菜單內(nèi)容的屬性值可以為空值。步驟409,不彈出菜單內(nèi)容。步驟410,當(dāng)所述用于彈出菜單內(nèi)容的標(biāo)簽的屬性值是菜單頁(yè)面HTML頁(yè)面內(nèi)容時(shí),所述容器對(duì)象直接根據(jù)所述菜單頁(yè)面的HTML頁(yè)面內(nèi)容顯示菜單內(nèi)容,當(dāng)所述用于彈出菜單內(nèi)容的標(biāo)簽的屬性值是菜單頁(yè)面URL地址時(shí),所述容器對(duì)象先根據(jù)所述URL地址獲取該菜單頁(yè)面的HTML頁(yè)面內(nèi)容,并根據(jù)獲取的HTML頁(yè)面內(nèi)容顯示菜單內(nèi)容。其中,用于顯示菜單內(nèi)容的容器對(duì)象可以接收對(duì)菜單頁(yè)面的操作命令,然后采用腳本文件處理所述操作命令。可見(jiàn),圖4所示方案通過(guò)在HTML頁(yè)面內(nèi)容中增加用于彈出菜單內(nèi)容的標(biāo)簽,并將該標(biāo)簽的屬性值設(shè)置為菜單頁(yè)面的HTML頁(yè)面內(nèi)容或URL地址,這樣,當(dāng)檢測(cè)到彈出菜單的命令時(shí),首先根據(jù)產(chǎn)生該命令的位置識(shí)別該位置上的節(jié)點(diǎn)(或該節(jié)點(diǎn)的父節(jié)點(diǎn))的HTML標(biāo)簽是否為用于彈出菜單內(nèi)容的標(biāo)簽,如果是,則讀取用于彈出菜單內(nèi)容的標(biāo)簽的屬性值,根據(jù)該屬性值顯示以HTML頁(yè)面形式存在的菜單內(nèi)容,從而使得,當(dāng)需要增加菜單項(xiàng)或者改變菜單項(xiàng)時(shí),只要更新用于彈出菜單內(nèi)容的標(biāo)簽的屬性值,即將該屬性值更新為新的菜單內(nèi)容對(duì)應(yīng)的HTML頁(yè)面內(nèi)容或URL地址即可,而不必修改源代碼中的窗口過(guò)程,從而提高了彈出菜單內(nèi)容的靈活性。另外,在根據(jù)菜單頁(yè)面的HTML頁(yè)面內(nèi)容顯示菜單內(nèi)容的方案中,也可以嵌入圖2所示的方案,即在菜單頁(yè)面的HTML頁(yè)面內(nèi)容中增加用于配置菜單頁(yè)面窗口屬性的HTML標(biāo)簽,通過(guò)執(zhí)行圖2的方案來(lái)配置菜單頁(yè)面窗口的屬性,即配置用于顯示菜單內(nèi)容的窗口的屬性。其中,步驟401生成的用于顯示菜單內(nèi)容的容器對(duì)象,相當(dāng)于圖2方案中由步驟201生成并隱藏的宿主窗口。圖5是本發(fā)明提供的根據(jù)菜單頁(yè)面的HTML頁(yè)面內(nèi)容顯示菜單內(nèi)容的方法流程圖。如圖5所示,該方法包括:步驟501,生成用于顯示菜單內(nèi)容的宿主窗口。步驟502,隱藏該用于顯示菜單內(nèi)容的宿主窗口。步驟503,識(shí)別菜單頁(yè)面的HTML頁(yè)面內(nèi)容中用于配置該用于顯示菜單內(nèi)容的宿主窗口屬性的標(biāo)簽。步驟504,讀取所述用于配置該用于顯示菜單內(nèi)容的宿主窗口屬性的標(biāo)簽的屬性值。步驟505,根據(jù)該屬性值配置該用于顯示菜單內(nèi)容的宿主窗口的屬性。步驟506,在用于顯示菜單內(nèi)容的宿主窗口的屬性配置完畢后,顯示配置后的用于顯示菜單內(nèi)容的宿主窗口。步驟507,在配置后的該用于顯示菜單內(nèi)容的宿主窗口中,渲染菜單頁(yè)面的HTML頁(yè)面內(nèi)容,并顯示渲染后的菜單頁(yè)面。在顯示渲染后的菜單頁(yè)面之后,用于顯示菜單內(nèi)容的宿主窗口可以接收對(duì)菜單頁(yè)面的操作命令,然后采用腳本文件處理所述操作命令。下面,分別舉具體的例子對(duì)圖2、圖3和圖4所示的方法進(jìn)行示例性介紹。在一實(shí)施例中,首先,在標(biāo)準(zhǔn)HTML文件中加入一個(gè)新的標(biāo)簽,可以稱為config標(biāo)簽。config標(biāo)簽內(nèi)可以寫入各種窗口屬性。例如,可以在config標(biāo)簽里輸入宿主窗口的初始長(zhǎng)度,高度和最小尺寸的長(zhǎng)度和高度:<configid=″window-config″window-width=″300″window-height=″600″minimum-width=″300″minimum-height=″400″>定義好HTML文件中用于配置窗口屬性的標(biāo)簽和其屬性值后,在擁有宿主窗口句柄的類中對(duì)應(yīng)地定義成員變量存放窗口屬性的值,因?yàn)榇翱趯傩缘闹悼赡軙?huì)在窗口過(guò)程中重復(fù)使用。瀏覽器內(nèi)核在讀取HTML文件完畢,生成dom樹(shù)后,會(huì)產(chǎn)生一個(gè)LoadEnd消息。在收到LoadEnd消息后,可以用dom樹(shù)的接口,訪問(wèn)config標(biāo)簽中的內(nèi)容。把config中窗口屬性的值保存到對(duì)應(yīng)的成員變量中以后,就可以根據(jù)這些窗口屬性值改變窗口的大小。其中,應(yīng)先生成宿主窗口,再讀取HTML頁(yè)面內(nèi)容,并且,在讀取HTML完畢并且配置完窗口屬性之前,應(yīng)將宿主窗口隱藏起來(lái)。即,在創(chuàng)建宿主窗口的時(shí)候?qū)⑵潆[藏,在配置完窗口屬性后把窗口顯示出來(lái)。通過(guò)這種“隱藏窗口—讀取HTML中定義的窗口屬性—根據(jù)獲得的屬性值改變窗口狀態(tài)—顯示窗口”的HTML端和宿主窗口端配合的模式,就可以配置各種窗口屬性了。在另一實(shí)施例中,通過(guò)在渲染HTML的窗口的窗口過(guò)程中處理WM_NCHITTEST消息,可以達(dá)到利用操作系統(tǒng)來(lái)拖動(dòng)宿主窗口的效果。具體地,在需要拖動(dòng)的元素的HTML標(biāo)簽上添加一個(gè)屬性″nchittest″,其值為″caption″時(shí),該元素的消息和事件完全由系統(tǒng)處理,擁有和窗口標(biāo)題欄一樣的表現(xiàn)。其值為″client″時(shí),該元素遵循原本HTML的性質(zhì)。具體處理流程:在宿主窗口過(guò)程中捕獲WM_NCHITTEST消息,根據(jù)產(chǎn)生該消息的坐標(biāo)位置,獲得該坐標(biāo)下的HTML標(biāo)簽的nchittest屬性的值,如果值為″caption″,該消息返回HTCAPTION消息,如果為″client″,則返回HTCLIENT消息。若標(biāo)簽沒(méi)有設(shè)置nchittest屬性,則往上查找其父結(jié)點(diǎn)的nchittest屬性,直到找到nchittest屬性或查找完根節(jié)點(diǎn)為止。這樣,由于HTCAPTION消息是系統(tǒng)消息,因此拖動(dòng)窗口的操作完全由操作系統(tǒng)處理,拖動(dòng)效果好。在再一實(shí)施例中,保持一個(gè)專門展現(xiàn)菜單內(nèi)容的容器對(duì)象。而這個(gè)容器對(duì)象,實(shí)際上可以是另一宿主窗口,即是用于顯示菜單內(nèi)容的宿主窗口。菜單界面為HTML頁(yè)面,容器對(duì)象負(fù)責(zé)在需要彈出菜單內(nèi)容時(shí),取得HTML并頁(yè)面內(nèi)容渲染HTML頁(yè)面內(nèi)容。因此,當(dāng)需要彈出菜單時(shí),只需要給這個(gè)容器對(duì)象提供菜單頁(yè)面的HTML或者其頁(yè)面的URL,即可展現(xiàn)需要彈出的菜單內(nèi)容。之后菜單上的操作和消息都可以由該容器對(duì)象展現(xiàn)的菜單頁(yè)面內(nèi)容上的javascript等腳本進(jìn)行處理。這樣,在修改或增加菜單選項(xiàng)、菜單屬性時(shí),只需要修改對(duì)應(yīng)的HTML或URL即可,客戶端代碼不需要任何修改。在該再一實(shí)施例中,關(guān)于在HTML頁(yè)面內(nèi)容中增加用于彈出菜單內(nèi)容的標(biāo)簽,介紹如下:增加的用于彈出菜單內(nèi)容的標(biāo)簽可以包括menu標(biāo)簽和child-menu標(biāo)簽,用于聲明該menu標(biāo)簽或child-menu標(biāo)簽彈出的菜單頁(yè)面對(duì)應(yīng)的HTML頁(yè)面內(nèi)容或URL。其中,當(dāng)menu標(biāo)簽或child-menu標(biāo)簽存在并為空值時(shí),表示該標(biāo)簽不彈出菜單。當(dāng)沒(méi)有menu標(biāo)簽或child-menu標(biāo)簽時(shí),會(huì)尋找上一級(jí)父節(jié)點(diǎn)是否存在child-menu標(biāo)簽,以確定其應(yīng)彈出的菜單頁(yè)面對(duì)應(yīng)的HTML頁(yè)面內(nèi)容或URL。假如查詢到的child-menu值為空,則不彈出菜單,并停止上向查詢child-menu標(biāo)簽。這樣,就可以通過(guò)為menu標(biāo)簽或child-menu標(biāo)簽配上菜單頁(yè)面的HTML頁(yè)面內(nèi)容或URL,實(shí)現(xiàn)彈出特定的菜單內(nèi)容。在該再一實(shí)施例中,關(guān)于彈出菜單的流程,介紹如下:以右鍵彈出菜單為例,假設(shè)用戶在頁(yè)面上某個(gè)標(biāo)簽上點(diǎn)擊右鍵,這時(shí),查詢當(dāng)前點(diǎn)擊位置所在標(biāo)簽是否是menu標(biāo)簽。如果是menu標(biāo)簽,把menu標(biāo)簽的屬性值傳給用于顯示菜單內(nèi)容的容器對(duì)象;如果不是menu標(biāo)簽,則向其父節(jié)點(diǎn)查詢是否存在child-menu標(biāo)簽,如果存在child-menu標(biāo)簽,則把該child-menu標(biāo)簽的屬性值傳給用于顯示菜單內(nèi)容的容器對(duì)象,否則繼續(xù)查詢此父節(jié)點(diǎn)的父節(jié)點(diǎn),直到尋找到child-menu標(biāo)簽或已查找完根結(jié)點(diǎn)為止。其中,用于顯示菜單內(nèi)容的容器對(duì)象在得到了menu標(biāo)簽的屬性值或child-menu標(biāo)簽的屬性值以后,判斷此屬性值是否為空,如果為空,則不用處理,即不彈出菜單,如果不為空,則根據(jù)該屬性值顯示菜單內(nèi)容。其中,如果該屬性值是URL,則根據(jù)該URL從網(wǎng)絡(luò)上拉取HTML頁(yè)面內(nèi)容,如果該屬性值是HTML頁(yè)面內(nèi)容,則可以直接通過(guò)讀取屬性值來(lái)獲取HTML頁(yè)面內(nèi)容,取得HTML頁(yè)面內(nèi)容并渲染完畢后,即可將菜單顯示出來(lái),然后等待接收用戶對(duì)菜單的操作。下面,舉一個(gè)示例的HTML頁(yè)面內(nèi)容進(jìn)行說(shuō)明,在該示例中,button1具有menu標(biāo)簽,其屬性值為menu1.HTML,button2和button3不帶有menu標(biāo)簽,但是他們擁有同一個(gè)父結(jié)點(diǎn),該父結(jié)點(diǎn)擁有child-menu標(biāo)簽,該child-menu標(biāo)簽的屬性值為menu2.HTML,因此,實(shí)際顯示的界面中,當(dāng)點(diǎn)擊button1時(shí),彈出的菜單為menu1菜單,當(dāng)點(diǎn)擊button2和button3時(shí),彈出的菜單為menu2菜單。根據(jù)本發(fā)明提供的上述方法,本發(fā)明還提供了相應(yīng)的裝置,具體請(qǐng)參見(jiàn)圖6。圖6是本發(fā)明提供的操作HTML頁(yè)面宿主窗口的裝置結(jié)構(gòu)圖。如圖6所示,該裝置包括識(shí)別模塊601、讀取模塊602和操作模塊603。其中,識(shí)別模塊601與讀取模塊602相連,讀取模塊602與操作模塊603相連,具體地:識(shí)別模塊601,用于識(shí)別HTML頁(yè)面內(nèi)容中用于操作宿主窗口的HTML標(biāo)簽。讀取模塊602,用于讀取所述用于操作宿主窗口的HTML標(biāo)簽的屬性值。操作模塊603,用于根據(jù)所述讀取模塊讀取的所述屬性值,對(duì)宿主窗口執(zhí)行相應(yīng)的操作。其中,用于操作宿主窗口的HTML標(biāo)簽可以包括用于配置宿主窗口屬性的標(biāo)簽。識(shí)別模塊601具體可以包括一模塊,用于讀取HTML頁(yè)面內(nèi)容并生成DOM樹(shù),在所述DOM樹(shù)生成完畢以后,根據(jù)DOM樹(shù)的接口,識(shí)別用于配置宿主窗口屬性的標(biāo)簽。讀取模塊602具體可以包括一模塊,用于獲取該用于配置宿主窗口屬性的標(biāo)簽的屬性值,保存所述屬性值。操作模塊603具體可以包括一模塊,用于生成宿主窗口并隱藏該宿主窗口,根據(jù)讀取模塊602保存的所述屬性值,對(duì)隱藏的所述宿主窗口的屬性進(jìn)行配置,顯示配置后的宿主窗口。用于操作宿主窗口的HTML標(biāo)簽可以包括用于拖動(dòng)宿主窗口的標(biāo)簽。識(shí)別模塊601具體可以包括一模塊,用于在宿主窗口中捕獲產(chǎn)生鼠標(biāo)事件或觸摸事件的信息,確定產(chǎn)生該鼠標(biāo)事件或觸摸事件的坐標(biāo)位置,識(shí)別該坐標(biāo)位置下DOM節(jié)點(diǎn)的HTML標(biāo)簽是否為用于拖動(dòng)宿主窗口的標(biāo)簽,如果是,啟動(dòng)讀取模塊602讀取所述用于拖動(dòng)宿主窗口的標(biāo)簽,如果否,繼續(xù)向上查找上一級(jí)父節(jié)點(diǎn),確定上一級(jí)父節(jié)點(diǎn)的HTML標(biāo)簽是否為用于拖動(dòng)宿主窗口的標(biāo)簽,如果是,啟動(dòng)讀取模塊602讀取所述用于拖動(dòng)宿主窗口的標(biāo)簽,否則,繼續(xù)向上查找上一級(jí)父節(jié)點(diǎn),直至查找到用于拖動(dòng)宿主窗口的標(biāo)簽、或者查找完根節(jié)點(diǎn)為止。讀取模塊602具體可以包括一模塊,用于讀取用于拖動(dòng)宿主窗口的標(biāo)簽的屬性值。操作模塊603具體可以包括一模塊,用于判斷讀取模塊602讀取的用于拖動(dòng)宿主窗口的標(biāo)簽的屬性值是否為允許拖動(dòng)的屬性值,如果是允許拖動(dòng)的屬性值,則觸發(fā)將發(fā)生該鼠標(biāo)事件或觸摸事件的位置作為由操作系統(tǒng)自身來(lái)處理的區(qū)域進(jìn)行處理的操作,如果是不允許拖動(dòng)的屬性值,則觸發(fā)將發(fā)生該鼠標(biāo)事件或觸摸事件的位置作為由HTML頁(yè)面內(nèi)容設(shè)計(jì)者來(lái)處理的區(qū)域進(jìn)行處理的操作。其中,所述產(chǎn)生鼠標(biāo)事件或觸摸事件的信息可以包括WM_NCHITTEST消息。所述將發(fā)生該鼠標(biāo)事件或觸摸事件的位置作為由操作系統(tǒng)自身來(lái)處理的區(qū)域進(jìn)行處理包括:針對(duì)所述WM_NCHITTEST消息返回HTCAPTION消息。所述將發(fā)生該鼠標(biāo)事件或觸摸事件的位置作為由HTML頁(yè)面內(nèi)容設(shè)計(jì)者來(lái)處理的區(qū)域進(jìn)行處理包括:針對(duì)所述WM_NCHITTEST消息返回HTCLIENT消息。其中,WM_NCHITTEST消息、HTCAPTION消息和HTCLIENT消息是Windows操作系統(tǒng)的系統(tǒng)消息。用于操作宿主窗口的HTML標(biāo)簽可以包括用于彈出菜單內(nèi)容的標(biāo)簽。識(shí)別模塊601具體可以包括一模塊,用于接收菜單彈出命令,確定產(chǎn)生該菜單彈出命令的坐標(biāo)位置,識(shí)別該坐標(biāo)位置下DOM節(jié)點(diǎn)的HTML標(biāo)簽是否為用于彈出菜單內(nèi)容的標(biāo)簽,如果是,啟動(dòng)讀取模塊602讀取所述用于彈出菜單內(nèi)容的標(biāo)簽的屬性值,如果否,繼續(xù)向上查找上一級(jí)父節(jié)點(diǎn),確定上一級(jí)父節(jié)點(diǎn)的HTML標(biāo)簽是否為用于彈出菜單內(nèi)容的標(biāo)簽,如果是,啟動(dòng)讀取模塊602讀取所述用于彈出菜單內(nèi)容的標(biāo)簽的屬性值,否則,繼續(xù)向上查找上一級(jí)父節(jié)點(diǎn),直至查找到用于彈出菜單內(nèi)容的標(biāo)簽、或者查找完根節(jié)點(diǎn)為止。讀取模塊602具體可以包括一模塊,用于讀取所述彈出菜單內(nèi)容的標(biāo)簽的屬性值,將所述屬性值傳給用于展示菜單內(nèi)容的容器對(duì)象。操作模塊603具體可以包括一模塊,用于生成用于顯示菜單內(nèi)容的容器對(duì)象。其中,所述容器對(duì)象判斷所述用于彈出菜單內(nèi)容的標(biāo)簽的屬性值是否為空,如果是,則不彈出菜單內(nèi)容,否則,根據(jù)作為所述用于彈出菜單內(nèi)容的標(biāo)簽的屬性值的菜單頁(yè)面HTML頁(yè)面內(nèi)容顯示菜單內(nèi)容,或者根據(jù)作為所述用于彈出菜單內(nèi)容的標(biāo)簽的屬性值的菜單頁(yè)面URL地址獲取該菜單頁(yè)面的HTML頁(yè)面內(nèi)容,并根據(jù)獲取的HTML頁(yè)面內(nèi)容顯示菜單內(nèi)容。其中,用于顯示菜單內(nèi)容的容器對(duì)象可以包括用于顯示菜單內(nèi)容的宿主窗口。操作模塊603具體可以包括一模塊,用于生成用于顯示菜單內(nèi)容的宿主窗口,隱藏該用于顯示菜單內(nèi)容的宿主窗口,識(shí)別菜單頁(yè)面的HTML頁(yè)面內(nèi)容中用于配置該用于顯示菜單內(nèi)容的宿主窗口屬性的標(biāo)簽,讀取所述用于配置該用于顯示菜單內(nèi)容的宿主窗口屬性的標(biāo)簽的屬性值,根據(jù)該屬性值配置該用于顯示菜單內(nèi)容的宿主窗口的屬性,并在用于顯示菜單內(nèi)容的宿主窗口的屬性配置完畢后,顯示配置后的用于顯示菜單內(nèi)容的宿主窗口,在配置后的該用于顯示菜單內(nèi)容的宿主窗口中,渲染菜單頁(yè)面的HTML頁(yè)面內(nèi)容,并顯示渲染后的菜單頁(yè)面。所述用于顯示菜單內(nèi)容的宿主窗口,可以接收對(duì)菜單頁(yè)面的操作命令,采用腳本文件處理所述操作命令。本發(fā)明還提供了一種機(jī)器可讀的存儲(chǔ)介質(zhì),存儲(chǔ)用于使一機(jī)器執(zhí)行如本文所述的操作HTML頁(yè)面宿主窗口的方法的指令。具體地,可以提供配有存儲(chǔ)介質(zhì)的系統(tǒng)或者裝置,在該存儲(chǔ)介質(zhì)上存儲(chǔ)著實(shí)現(xiàn)上述實(shí)施例中任一實(shí)施例的功能的軟件程序代碼,且使該系統(tǒng)或者裝置的計(jì)算機(jī)(或CPU或MPU)讀出并執(zhí)行存儲(chǔ)在存儲(chǔ)介質(zhì)中的程序代碼。在這種情況下,從存儲(chǔ)介質(zhì)讀取的程序代碼本身可實(shí)現(xiàn)上述實(shí)施例中任何一項(xiàng)實(shí)施例的功能,因此程序代碼和存儲(chǔ)程序代碼的存儲(chǔ)介質(zhì)構(gòu)成了本發(fā)明的一部分。用于提供程序代碼的存儲(chǔ)介質(zhì)實(shí)施例包括軟盤、硬盤、磁光盤、光盤(如CD-ROM、CD-R、CD-RW、DVD-ROM、DVD-RAM、DVD-RW、DVD+RW)、磁帶、非易失性存儲(chǔ)卡和ROM。可選擇地,可以由通信網(wǎng)絡(luò)從服務(wù)器計(jì)算機(jī)上下載程序代碼。此外,應(yīng)該清楚的是,不僅可以通過(guò)執(zhí)行計(jì)算機(jī)所讀出的程序代碼,而且可以通過(guò)基于程序代碼的指令使計(jì)算機(jī)上操作的操作系統(tǒng)等來(lái)完成部分或者全部的實(shí)際操作,從而實(shí)現(xiàn)上述實(shí)施例中任意一項(xiàng)實(shí)施例的功能。此外,可以理解的是,將由存儲(chǔ)介質(zhì)讀出的程序代碼寫到插入計(jì)算機(jī)內(nèi)的擴(kuò)展板中所設(shè)置的存儲(chǔ)器中或者寫到與計(jì)算機(jī)相連接的擴(kuò)展單元中設(shè)置的存儲(chǔ)器中,隨后基于程序代碼的指令使安裝在擴(kuò)展板或者擴(kuò)展單元上的CPU等來(lái)執(zhí)行部分和全部實(shí)際操作,從而實(shí)現(xiàn)上述實(shí)施例中任一實(shí)施例的功能。以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明保護(hù)的范圍之內(nèi)。