欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種基于Webkit內(nèi)核提供網(wǎng)頁瀏覽的方法及裝置的制作方法

文檔序號:6369167閱讀:231來源:國知局
專利名稱:一種基于Webkit 內(nèi)核提供網(wǎng)頁瀏覽的方法及裝置的制作方法
技術(shù)領(lǐng)域
本申請涉及網(wǎng)頁技術(shù),特別是涉及一種基于Webkit內(nèi)核提供網(wǎng)頁瀏覽的方法及
>J-U裝直。
背景技術(shù)
網(wǎng)頁瀏覽器在全球廣泛使用,是一種用于訪問互聯(lián)網(wǎng)獲取資訊的應(yīng)用軟件。隨著技術(shù)的進(jìn)步和發(fā)展,越來越多其他類型的軟件,如即時通訊軟件、下載軟件、甚至輸入法等,都開始借助和使用網(wǎng)頁瀏覽器的頁面訪問能力,實現(xiàn)其軟件的某些功能,提供更好的用戶 體驗。目前的實現(xiàn)方式,大多使用微軟提供的Webbrowser對象,通過在進(jìn)程內(nèi)實現(xiàn)一個Webbrowser COM對象來訪問頁面,實現(xiàn)相關(guān)功能。這一技術(shù)實現(xiàn)方式存在以下弊端,例如Webbrowser是一個安全性較弱的瀏覽器控件,容易引發(fā)安全問題。

發(fā)明內(nèi)容
本申請?zhí)峁┝艘环N基于Webkit內(nèi)核提供網(wǎng)頁瀏覽的方法及裝置,以解決瀏覽器中使用Webbrowser內(nèi)核控件而帶來的安全性弱的問題。為了解決上述問題,本申請公開了一種基于Webkit內(nèi)核提供網(wǎng)頁瀏覽的方法,包括設(shè)置一 Webkit內(nèi)核的頁面對象導(dǎo)出接口 ;在第一獨立進(jìn)程中啟動Webkit內(nèi)核;在第二獨立進(jìn)程中調(diào)用所述頁面對象導(dǎo)出接口創(chuàng)建基于Webkit內(nèi)核的頁面對象;并通過所述頁面對象調(diào)用所述第一獨立進(jìn)程中的Weblkit內(nèi)核,進(jìn)行基于Webkit內(nèi)核的頁面瀏覽操作和頁面內(nèi)容加載。優(yōu)選地,所述調(diào)用所述頁面對象導(dǎo)出接口創(chuàng)建基于Webkit內(nèi)核的頁面對象,包括獲得所述頁面對象導(dǎo)出接口提供的工廠方法;調(diào)用所述工廠方法創(chuàng)建工廠對象;調(diào)用所述工廠對象創(chuàng)建基于Webkit內(nèi)核的頁面對象。優(yōu)選地,所述通過所述頁面對象調(diào)用所述第一獨立進(jìn)程中的Weblkit內(nèi)核,進(jìn)行基于Webkit內(nèi)核的頁面內(nèi)容加載,包括通過所述頁面對象提供的頁面創(chuàng)建方法,調(diào)用所述第一獨立進(jìn)程中的Weblkit內(nèi)核創(chuàng)建頁面窗口;在該頁面窗口中進(jìn)行基于Webkit內(nèi)核的頁面內(nèi)容加載。優(yōu)選地,在第二獨立進(jìn)程中進(jìn)行所述頁面內(nèi)容加載,
所述加載包括根據(jù)接收到的http請求獲取頁面內(nèi)容;對獲取到的頁面內(nèi)容進(jìn)行解析;對解析結(jié)果執(zhí)行js操作;根據(jù)js操作結(jié)果建立dom樹;對dom樹進(jìn)行渲染和展現(xiàn)。優(yōu)選地,所述頁面瀏覽操作包括
頁面跳轉(zhuǎn),和/或,頁面窗口移動,和/或,頁面停止加載,和/或,頁面刷新,和/或,頁面的前進(jìn)、后退,和/或,頁面銷毀。優(yōu)選地,所述通過所述頁面對象調(diào)用所述獨立進(jìn)程中的Weblkit內(nèi)核,進(jìn)行基于Webkit內(nèi)核的頁面瀏覽操作,包括通過所述頁面對象提供的Navigate方法,調(diào)用所述獨立進(jìn)程中的Weblkit內(nèi)核在該頁面窗口中進(jìn)行頁面跳轉(zhuǎn)操作;和/或,通過所述頁面對象提供的Imposition方法,調(diào)用所述獨立進(jìn)程中的Weblkit內(nèi)核告知所述頁面窗口跟隨外部窗口的移動而移動;和/或,通過所述頁面對象提供的Stop方法,調(diào)用所述獨立進(jìn)程中的Weblkit內(nèi)核停止在該頁面窗口中加載頁面內(nèi)容;和/或,通過所述頁面對象提供的Reload方法,調(diào)用所述獨立進(jìn)程中的Weblkit內(nèi)核器刷新該頁面窗口中的頁面內(nèi)容;和/或,通過所述頁面對象提供的GoBack方法,調(diào)用所述獨立進(jìn)程中的Weblkit內(nèi)核在該頁面窗口中進(jìn)行頁面后退操作;和/或,通過所述頁面對象提供的GoForward方法,調(diào)用所述獨立進(jìn)程中的Weblkit內(nèi)核在該頁面窗口中進(jìn)行頁面前進(jìn)操作;和/或,通過所述頁面對象提供的Destroy方法,調(diào)用所述獨立進(jìn)程中的Weblkit內(nèi)核銷毀該頁面對象。優(yōu)選地,所述通過所述頁面對象調(diào)用所述第一獨立進(jìn)程中的Weblkit內(nèi)核,包括構(gòu)造參數(shù)對象,并在所述參數(shù)對象中填充目標(biāo)訪問的網(wǎng)址和窗口句柄;將填充后的參數(shù)對象作為參數(shù)值傳遞給所述頁面對象提供的頁面創(chuàng)建方法;通過調(diào)用參數(shù)賦值后的頁面創(chuàng)建方法,實現(xiàn)與所述獨立進(jìn)程中的Weblkit內(nèi)核進(jìn)行通信。優(yōu)選地,所述設(shè)置一 Webkit內(nèi)核的頁面對象導(dǎo)出接口,包括通過動態(tài)鏈接庫提供Webkit內(nèi)核的頁面對象導(dǎo)出接口。優(yōu)選地,調(diào)用所述頁面對象導(dǎo)出接口之前,還包括訪問注冊表,查找注冊表中所述動態(tài)鏈接庫的存儲路徑;從所述存儲路徑加載所述動態(tài)鏈接庫。優(yōu)選地,還包括Webkit內(nèi)核升級后更新所述動態(tài)鏈接庫的版本,并將新版本的動態(tài)鏈接庫保存到不同于舊版本的存儲路徑。優(yōu)選地,多個第二獨立進(jìn)程從同一存儲路徑加載同一所述動態(tài)鏈接庫。
本申請還提供了一種基于Webkit內(nèi)核提供網(wǎng)頁瀏覽的裝置,包括接口導(dǎo)出模塊,用于設(shè)置一 Webkit內(nèi)核的頁面對象導(dǎo)出接口 ;內(nèi)核啟動模塊,用于在 第一獨立進(jìn)程中啟動Webkit內(nèi)核;第一調(diào)用模塊,用于在第二獨立進(jìn)程中調(diào)用所述頁面對象導(dǎo)出接口創(chuàng)建基于Webkit內(nèi)核的頁面對象;并第二調(diào)用模塊,用于通過所述頁面對象調(diào)用所述第一獨立進(jìn)程中的Weblkit內(nèi)核,進(jìn)行基于Webkit內(nèi)核的頁面瀏覽操作和頁面內(nèi)容加載。優(yōu)選地,所述第一調(diào)用模塊包括工廠方法獲取子模塊,用于獲得所述頁面對象導(dǎo)出接口提供的工廠方法;工廠對象創(chuàng)建子模塊,用于調(diào)用所述工廠方法創(chuàng)建工廠對象;頁面對象創(chuàng)建子模塊,用于調(diào)用所述工廠對象創(chuàng)建基于Webkit內(nèi)核的頁面對象。優(yōu)選地,所述第二調(diào)用模塊通過所述頁面對象提供的頁面創(chuàng)建方法,調(diào)用所述第一獨立進(jìn)程中的Weblkit內(nèi)核創(chuàng)建頁面窗口,并在該頁面窗口中進(jìn)行基于Webkit內(nèi)核的頁面內(nèi)容加載。優(yōu)選地,在第二獨立進(jìn)程中進(jìn)行所述頁面內(nèi)容加載,所述加載包括根據(jù)接收到的http請求獲取頁面內(nèi)容;對獲取到的頁面內(nèi)容進(jìn)行解析;對解析結(jié)果執(zhí)行js操作;根據(jù)js操作結(jié)果建立dom樹;對dom樹進(jìn)行渲染和展現(xiàn)。優(yōu)選地,所述頁面瀏覽操作包括頁面跳轉(zhuǎn),和/或,頁面窗口移動,和/或,頁面停止加載,和/或,頁面刷新,和/或,頁面的前進(jìn)、后退,和/或,頁面銷毀。優(yōu)選地,所述第二調(diào)用模塊包括導(dǎo)航調(diào)用子模塊,用于通過所述頁面對象提供的Navigate方法,調(diào)用所述獨立進(jìn)程中的Weblkit內(nèi)核在該頁面窗口中進(jìn)行頁面跳轉(zhuǎn)操作;和/或,移動調(diào)用子模塊,用于通過所述頁面對象提供的R印osition方法,調(diào)用所述獨立進(jìn)程中的Weblkit內(nèi)核告知所述頁面窗口跟隨外部窗口的移動而移動;和/或,停止調(diào)用子模塊,用于通過所述頁面對象提供的Stop方法,調(diào)用所述獨立進(jìn)程中的Weblkit內(nèi)核停止在該頁面窗口中加載頁面內(nèi)容; 和/或,刷新調(diào)用子模塊,用于通過所述頁面對象提供的Reload方法,調(diào)用所述獨立進(jìn)程中的Weblkit內(nèi)核器刷新該頁面窗口中的頁面內(nèi)容;和/或,頁面后退調(diào)用子模塊,用于通過所述頁面對象提供的GoBack方法,調(diào)用所述獨立進(jìn)程中的Weblkit內(nèi)核在該頁面窗口中進(jìn)行頁面后退操作;和/或,頁面前進(jìn)調(diào)用子模塊,用于通過所述頁面對象提供的GoForward方法,調(diào)用所述獨立進(jìn)程中的Weblkit內(nèi)核在該頁面窗口中進(jìn)行頁面前進(jìn)操作;和/或,銷毀調(diào)用子模塊,用于通過所述頁面對象提供的Destroy方法,調(diào)用所述獨立進(jìn)程中的Weblkit內(nèi)核銷毀該頁面對象。
優(yōu)選地,所述第二調(diào)用模塊包括構(gòu)造子模塊,用于構(gòu)造參數(shù)對象,并在所述參數(shù)對象中填充目標(biāo)訪問的網(wǎng)址和窗口句柄;參數(shù)賦值子模塊,用于將填充后的參數(shù)對象作為參數(shù)值傳遞給所述頁面對象提供的頁面創(chuàng)建方法;頁面創(chuàng)建子模塊,用于通過調(diào)用參數(shù)賦值后的頁面創(chuàng)建方法,實現(xiàn)與所述獨立進(jìn)程中的Weblkit內(nèi)核進(jìn)行通信。優(yōu)選地,所述接口導(dǎo)出模塊通過動態(tài)鏈接庫提供Webk it內(nèi)核的頁面對象導(dǎo)出接□。優(yōu)選地,還包括路徑查找模塊,用于訪問注冊表,查找注冊表中所述動態(tài)鏈接庫的存儲路徑;加載模塊,用于從所述存儲路徑加載所述動態(tài)鏈接庫。優(yōu)選地,還包括更新模塊,用于Webkit內(nèi)核升級后更新所述動態(tài)鏈接庫的版本,并將新版本的動態(tài)鏈接庫保存到不同于舊版本的存儲路徑。優(yōu)選地,多個第二獨立進(jìn)程通過從同一存儲路徑加載同一所述動態(tài)鏈接庫。與現(xiàn)有技術(shù)相比,本申請包括以下優(yōu)點本申請?zhí)岢隽艘环N跨進(jìn)程使用webkit核心實現(xiàn)網(wǎng)頁瀏覽的方法,能很好地解決瀏覽器中的Webtoowser內(nèi)核版本落后、安全性薄弱、不支持非微軟平臺的問題,和直接使用webkit核心導(dǎo)致的技術(shù)門檻高、升級困難、安裝包過大等問題。首先,本申請為WebKit內(nèi)核導(dǎo)出WebAppTabWrapper對象的接口,第三方軟件獲得WebAppTabWrapper對象后,通過調(diào)用該對象的Create方法,通知webkit瀏覽器創(chuàng)建一個新的頁面。網(wǎng)頁瀏覽中進(jìn)行的http請求,解析返回數(shù)據(jù),執(zhí)行js,建立dom樹,完成最后渲染等具體工作都對第三方軟件不可見,簡化了第三方軟件的技術(shù)使用難度。第三方軟件和真正的頁面訪問、解析、渲染模塊工作在不同進(jìn)程,進(jìn)程間隔離很好的保護(hù)了第三方軟件不受頁面不安全因素的影響。因此,本申請能很好地解決瀏覽器中使用Webtoowser內(nèi)核而帶來的安全性薄弱、容易導(dǎo)致用戶安全的問題。其次,Webkit核心的升級和bug修復(fù)等,由dll服務(wù)的升級檢查功能完成。在進(jìn)行新版本升級安裝時不影響舊版本的運行使用,對第三方軟件完全不可見。第三方軟件通過訪問注冊表的某個項目獲取新的服務(wù)版本dll路徑,加載后使用。并且,新舊版本可以同時使用。因此,本申請能很好地解決瀏覽器中的Webbrowser內(nèi)核版本落后的問題。而且,本申請可以簡化第三方軟件在windows平臺和非windows平臺使用網(wǎng)頁瀏覽增加軟件功能的開發(fā)難度,使任意第三方軟件可以使用本發(fā)明提供的網(wǎng)頁訪問服務(wù),輕易的訪問頁面,增強(qiáng)軟件用戶體驗。當(dāng)然,實施本申請的任一產(chǎn)品不一定需要同時達(dá)到以上所述的所有優(yōu)點。


圖I是本申請實施例所述一種基于webkit核心的跨進(jìn)程網(wǎng)頁瀏覽方法的流程圖2是本申請另一實施例所述基于webkit核心的跨進(jìn)程網(wǎng)頁瀏覽方法的流程圖;圖3是本申請實施例所述一種基于webkit核心的跨進(jìn)程網(wǎng)頁瀏覽裝置的結(jié)構(gòu)圖;圖4是本申請另一實施例所述一種基于webkit核心的跨進(jìn)程網(wǎng)頁瀏覽裝置的結(jié)構(gòu)圖;圖5是本申請另一實施例所述基于webkit核心的跨進(jìn)程網(wǎng)頁瀏覽方法的流程圖;圖6是本申請另一實施例所述一種基于webkit核心的跨進(jìn)程網(wǎng)頁瀏覽裝置的結(jié)構(gòu)圖。
具體實施例方式為使本申請的上述目的、特征和優(yōu)點能夠更加明顯易懂,下面結(jié)合附圖和具體實施方式
對本申請作進(jìn)一步詳細(xì)的說明。目前,越來越多其他類型的第三方軟件,如即時通訊軟件、下載軟件、甚至輸入法等,都開始借助和使用網(wǎng)頁瀏覽器的頁面訪問能力,實現(xiàn)其軟件的某些功能,提供更好的用戶體驗。微軟的IE瀏覽器提供的Webbrowser對象存在較多的弊端,例如Webbrowser對象的版本過老限制了很多新的頁面技術(shù)的使用和展現(xiàn);Webbrowser是一個安全性較弱的瀏覽器核心,容易引發(fā)安全問題;Webtoowser容易被各種流氓軟件安裝插件,注入代碼,引發(fā)很多使用問題,比如關(guān)閉了 fash和java運行,導(dǎo)致相關(guān)功能失效。在第三方軟件實現(xiàn)網(wǎng)頁瀏覽的過程中,為了解決IE的Webbrowser內(nèi)核存在的上述各種問題,本申請?zhí)峁┝艘环N使用webkit實現(xiàn)網(wǎng)頁瀏覽的方法。其中,所述webkit是Chrome瀏覽器的核心,webkit是一個開放源代碼的瀏覽器引擎(web browser engine)。但是,如果在第三方軟件中直接使用webkit核心實現(xiàn)網(wǎng)頁瀏覽,存在以下缺陷webkit核心接口復(fù)雜,技術(shù)門檻高,增加了軟件利用其實現(xiàn)頁面瀏覽功能的技術(shù)門檻;webkit核心代碼較多,dll (動態(tài)鏈接庫)較大,增加了使用其軟件的體積;瀏覽器版本更新迅速,直接包含webkit核心無法做到快速使用最新技術(shù),規(guī)避已知安全問題。基于此,本申請沒有直接使用webkit核心,提供了一種跨進(jìn)程的頁面瀏覽服務(wù)dll,任何第三方軟件可以在安裝了此種dll服務(wù)的系統(tǒng)上獲得頁面瀏覽能力,從而簡化了使用webkit渲染頁面的技術(shù)門檻和復(fù)雜度。Webkit作為一個完整的瀏覽器內(nèi)核,只負(fù)責(zé)完成html解析和渲染工作,其它工作如網(wǎng)絡(luò)連接請求、js解析、外圍包裝等,都需要第三方軟件實現(xiàn)后,webkit才能正常工作。而實現(xiàn)一個良好的http協(xié)議棧和js解析器難度巨大,工作復(fù)雜。本申請中的這種頁面瀏覽的dll服務(wù)可以理解為一個代理,代理封裝了網(wǎng)絡(luò)連接請求、js解析、外圍包裝等工作,從而將這些用戶不關(guān)心又復(fù)雜的部分對用戶進(jìn)行了屏蔽;并且,代理還封裝了簡單的接口來調(diào)用幾個基本的webkit瀏覽器操作。第三方軟件可以通過這種dll服務(wù)實現(xiàn)與webkit核心的通信,用戶只需給出url和一個用于承載頁面的窗口句柄,就可以得到一個渲染完成的網(wǎng)頁。由于網(wǎng)頁瀏覽過程中的很多工作都由dll服務(wù)完成,因此簡化了第三方軟件的開發(fā)。下面通過實施例對本申請所述方法的實現(xiàn)流程進(jìn)行詳細(xì)說明。參照圖1,是本申請實施例所述一種基于webkit核心的跨進(jìn)程網(wǎng)頁瀏覽方法的流程圖。步驟101,通過自定義接口加載動態(tài)鏈接庫;所述自定義接口包括外部接口和內(nèi)部接口,通過外部接口可以加載動態(tài)鏈接庫。動態(tài)鏈接庫(dll服務(wù))提供給第三方軟件使用的是外部接口,第三方軟件實現(xiàn)這些簡單的外部接口后,就可以與動態(tài)鏈接庫通信。動態(tài)鏈接庫還提供了 Webkit內(nèi)核的頁面對象導(dǎo)出接口,這些內(nèi)部接口為webkit 內(nèi)核導(dǎo)出的類似IE的Webbrowser對象的接口,但具體的接口數(shù)目和使用復(fù)雜度要大大低于IE的Webbrowser。而且,傳統(tǒng)方法包裝webkit需要實現(xiàn)數(shù)百個接口,但本申請實施例中第三方軟件所需實現(xiàn)的接口數(shù)目非常少,但幾個基本的瀏覽器操作都已經(jīng)包括在其中。第三方軟件實現(xiàn)所述數(shù)目較少的自定義接口后,通過自定義接口加載動態(tài)鏈接庫dlI,具體的加載方法如下通過自定義接口訪問注冊表;查找注冊表中所述動態(tài)鏈接庫dll的存儲路徑;從所述存儲路徑加載所述動態(tài)鏈接庫dll。步驟102,調(diào)用所述動態(tài)鏈接庫來創(chuàng)建頁面對象;通過調(diào)用動態(tài)鏈接庫提供的內(nèi)部接口,就可以實現(xiàn)與Webkit內(nèi)核的通信。其中,使用工廠模式來創(chuàng)建頁面對象。工廠模式就是專門負(fù)責(zé)將大量有共同接口的類實例化,而且不必事先知道每次是要實例化哪一個類的模式。它定義一個用于創(chuàng)建對象的接口,由子類決定實例化哪一個類。具體子步驟如下子步驟I,調(diào)用所述動態(tài)鏈接庫來獲得工廠方法;子步驟2,調(diào)用所述工廠方法創(chuàng)建工廠對象;子步驟3,調(diào)用所述工廠對象創(chuàng)建頁面對象。步驟103,通過調(diào)用所述頁面對象中的頁面創(chuàng)建方法,通知webkit瀏覽器創(chuàng)建頁面窗口,并完成該頁面窗口中頁面內(nèi)容的渲染和展現(xiàn)。具體子步驟如下子步驟1,構(gòu)造參數(shù)對象,并在所述參數(shù)對象中填充目標(biāo)訪問的網(wǎng)址和窗口句柄;子步驟2,將填充后的參數(shù)對象作為參數(shù)值傳遞給所述頁面對象中的頁面創(chuàng)建方法;子步驟3,通過調(diào)用參數(shù)賦值后的頁面創(chuàng)建方法,通知webkit瀏覽器創(chuàng)建頁面窗口,并完成該頁面窗口中頁面內(nèi)容的渲染和展現(xiàn)。頁面對象中提供了頁面創(chuàng)建方法,該方法中設(shè)有參數(shù),參數(shù)賦值為目標(biāo)訪問的網(wǎng)址和窗口句柄后,通過調(diào)用該方法即可與webkit內(nèi)核通信,參數(shù)值傳給webkit內(nèi)核,webkit內(nèi)核按照參數(shù)值訪問目標(biāo)網(wǎng)址,并創(chuàng)建頁面窗口,完成該頁面窗口中頁面內(nèi)容的渲染和展現(xiàn)。
最后,瀏覽器的相關(guān)回調(diào)還可通過對應(yīng)的函數(shù)調(diào)用通知第三方軟件。下面通過一個具體的例子詳細(xì)解釋上述內(nèi)容。接口的內(nèi)容和用法如下提供一個工廠方法,供第三方軟件調(diào)用extern" C" {DLL_INTERFACE WebAppFactory^GetffebAppFactory();};第三方軟件可通過LoadLibrary函數(shù)加載dl I服務(wù)(動態(tài)鏈接庫),并通過GetProcAddress函數(shù)獲得工廠方法GetWebAppFactory,并創(chuàng)建工廠對象WebAppFactory,進(jìn)而得到一個頁面對象WebAppTabWrapper,其接口如下
class WebAppTaWrapper {public:
virtual HKESULT STDMETHODCALLTYPE Create(WebApj)CreateParams const &) = 0; virtual HKESULT STDMETHODCALLTYPE DestroyO = 0; virtual HRESULT STDMETHODCALLTYPE Navigate(char const *) = 0;virtual HRESULT STDMETHODCALLTYPE Reposition (
WebAppRepositionParams const &) = 0; virtual HRESULT STDMETHODCALLTYPE Stop( void) = 0; virtual HRESULT STDMETHODCALLTYPE Reload( void) = 0; virtual HRESULT STDMETHODCALLTYPE GoBack( void) = 0; virtual HKESULT STDMETHODCALLTYPE GoForward( void) = 0; virtual "WebAppTabfrapper () {}
};第三方軟件獲得WebAppTabWrapper對象后,通過調(diào)用該對象提供的Create方法,通知webkit內(nèi)核的網(wǎng)頁瀏覽服務(wù)創(chuàng)建一個新的頁面,并調(diào)用Navigate方法通知服務(wù)進(jìn)行導(dǎo)航操作,Stop、Reload、GoBack、GoForward則提供基本的頁面前進(jìn)后退、停止加載和刷新功能。第三方軟件在不再需要瀏覽頁面時,通過調(diào)用Destroy方法銷毀頁面對象。具體的,還可以包括以下步驟通過調(diào)用所述頁面對象中的Navigate方法,通知webkit瀏覽器在該頁面窗口中進(jìn)行頁面跳轉(zhuǎn)操作。例如,新創(chuàng)建的頁面窗口中,最初訪問目標(biāo)網(wǎng)址顯示的歡迎頁面的內(nèi)容,然后通過調(diào)用Navigate方法,可以從歡迎頁跳轉(zhuǎn)到真正的主頁,但是不再創(chuàng)建新的頁面窗口,只在同一個頁面窗口中進(jìn)行頁面內(nèi)容的跳轉(zhuǎn)。
通過調(diào)用所述頁面對象中的Stop方法,通知webkit瀏覽器停止該頁面窗口中頁面內(nèi)容的渲染和展現(xiàn)。通過調(diào)用所述頁面對象中的Reload方法,通知webkit瀏覽器刷新該頁面窗口中的頁面內(nèi)容。通過調(diào)用所述頁面對象中的GoBack方法,通知webkit瀏覽器在該頁面窗口中進(jìn)行頁面后退操作;通過調(diào)用所述頁面對象中的GoForward方法,通知webkit瀏覽器在該頁面窗口中進(jìn)行頁面前進(jìn)操作。通過調(diào)用所述頁面對象中的Destroy方法,通知webkit瀏覽器銷毀該頁面對象。 當(dāng)?shù)谌杰浖崿F(xiàn)如上接口后,webkit瀏覽器的相關(guān)回調(diào)將通過對應(yīng)的函數(shù)調(diào)用通知第三方軟件。具體的工作流程如圖2所示參照圖2,是本申請另一實施例所述基于webkit核心的跨進(jìn)程網(wǎng)頁瀏覽方法的流程圖。步驟201,第三方軟件實現(xiàn)WebAppUIDelegate接口 ;所述WebAppUIDelegate接口是dl I服務(wù)提供給第三方軟件使用的外部接口,作為一個較佳實施例,該接口具體地提供了以下接口函數(shù)
class WebAppUIDelegate { public:
virtual void OnHandleAccelerator() = 0; virtual void OnOpenURL() = 0; virtual void OnTitleChangeO = 0; virtual void OnStatusTextChange() = 0; virtual void OnNavigateComplete2() = 0; virtual void OnNavigateError() = 0; virtual void OnQuit() = 0; virtual void OnUpdateTargetUrl() = 0; virtual void OnGetCurrentUrlRsp() = 0; virtual void OnCrashReport() = 0; virtual, void OnReportMainWindowO = 0; virtual, void OnWebAppJsCa11 () = 0;
};
各接口函數(shù)的說明如下OnHandleAccelerator函數(shù)提供快捷鍵回調(diào)方法,通知第三方軟件用戶按下了一組快捷鍵;OnOpenURL函數(shù)提供打開頁面回調(diào)方法,通知第三方軟件用戶嘗試開啟一個新頁面,第三方軟件可以允許或禁止;OnTitleChange函數(shù)提供title (標(biāo)題)改變回調(diào)方法,通知第三方軟件當(dāng)前的窗口 title文字發(fā)生了改變;OnStatusTextChange函數(shù)提供狀態(tài)欄改變回調(diào)方法,通知第三方軟件當(dāng)前的窗口狀態(tài)欄文字發(fā)生了改變;0nNavigateComplete2函數(shù)提供導(dǎo)航完畢回調(diào)方法,通知第三方軟件導(dǎo)航完成;
OnNavigateError函數(shù)提供導(dǎo)航錯誤回調(diào)方法,通知第三方軟件導(dǎo)航錯誤;OnQuit函數(shù)提供退出回調(diào)方法,通知第三方軟件用戶關(guān)閉了當(dāng)前頁面或者渲染服務(wù)因某種原因退出了;OnUpdateTargetUrl函數(shù)提供目標(biāo)url更新回調(diào)方法,通知第三方軟件當(dāng)前的目標(biāo)url發(fā)生了改變;OnGetCurrentUrlRsp函數(shù)提供獲取當(dāng)前url回調(diào)方法,通知第三方軟件當(dāng)前的url ;OnCrashReport函數(shù)提供崩潰回調(diào)方法,通知第三方軟件頁面訪問服務(wù)發(fā)生了崩潰;OnReportMainffindow函數(shù)提供主窗口回調(diào)方法,通知第三方軟件當(dāng)前頁面的主窗
n ;OnWebAppJsCalI函數(shù)提供js回調(diào)方法,通知第三方軟件,頁面請求執(zhí)行一個外部js調(diào)用。步驟202,通過約定的注冊表項目,找到Webapp_proxy. dll所在的路徑;其中,所述Webapp_proxy. dll是動態(tài)鏈接庫,即dll服務(wù);步驟203,加載 Webapp_proxy. dll ;如果加載成功,即繼續(xù)步驟204 ;如果加載失敗,則轉(zhuǎn)到異常處理;步驟204,使用 GetProcAddress 函數(shù)得到 GetWebAppFactory 方法;其中,所述GetWebAppFactory方法為工廠方法;步驟205,調(diào)用GetWebAppFactory方法創(chuàng)建一個工廠對象;創(chuàng)建的工廠對象為WebAppFactory ;步驟206,調(diào)用工廠對象的CreateWebAppTab方法創(chuàng)建一個標(biāo)簽頁對象;其中,所述標(biāo)簽頁對象為WebAppTaWrapper ;步驟207,構(gòu)造一個WebAppCreateParams對象,并填充好目標(biāo)的url和用于容納頁面的窗口句柄,然后用這個對象作為參數(shù)調(diào)用標(biāo)簽頁對象的Create方法,通知webkit內(nèi)核創(chuàng)建頁面;其中,所述WebAppCreateParams對象為參數(shù)對象;webkit內(nèi)核根據(jù)目標(biāo)的url和窗口句柄創(chuàng)建一個新的頁面窗口,并完成頁面的渲染和展現(xiàn);
步驟208,如果機(jī)器的網(wǎng)絡(luò)環(huán)境正常且url正確,一個新的頁面窗口將成為WebAppCreateParams的子窗口,并完成頁面的渲染和展現(xiàn)工作,用戶可以正常地和這個頁面交互?;趫D2的流程,多個第三方軟件可以同時加載此接口 dll,完成頁面瀏覽,彼此互不影響,互不可見。Webkit核心的升級和bug修復(fù)等,由dll服務(wù)的升級檢查功能完成。在進(jìn)行新版本升級安裝時不影響舊版本的運行使用,對第三方軟件完全不可見。第三方軟件通過訪問注冊表的某個項目獲取新的服務(wù)版本dll路徑,加載后使用。并且,新舊版本可以同時使用。綜上所述,本申請實施例為WebKit內(nèi)核導(dǎo)出WebAppTabWrapper對象的接口,第三方軟件獲得WebAppTabWrapper對象后,通過調(diào)用該對象的Create方法,通知webkit瀏覽器創(chuàng)建一個新的頁面。網(wǎng)頁瀏覽中進(jìn)行的http請求,解析返回數(shù)據(jù),執(zhí)行js,建立dom樹,完成最后渲染等具體工作都對第三方軟件不可見,簡化了第三方軟件的技術(shù)使用難度。第三方軟件和真正的頁面訪問、解析、渲染模塊工作在不同進(jìn)程,即實現(xiàn)了跨進(jìn)程的訪問,進(jìn)程間隔離很好的保護(hù)了第三方軟件不受頁面不安全因素的影響。其中,所述“進(jìn)程間隔離”包含兩層含義;其一,dll服務(wù)與webkit內(nèi)核相互隔離,分別工作在不同進(jìn)程;其二,第三方軟件之間相互隔離,每個第三方軟件都可以獨立加載dll服務(wù)來完成頁面瀏覽,相互之間互不干擾。而且,基于webkit核心的網(wǎng)頁訪問服務(wù)不受限于微軟windows操作系統(tǒng)的版本及操作系統(tǒng)本身,在非windows平臺,也能以與上文類似的方式工作,簡化了第三方軟件進(jìn)行跨平臺版本開發(fā)的難度??傊?,本申請?zhí)岢隽艘环N跨進(jìn)程使用webkit核心實現(xiàn)網(wǎng)頁瀏覽的方法,能很好地解決IE的Webbrowser內(nèi)核版本落后、安全性薄弱、不支持非微軟平臺的問題,和直接使用w e b k i t核心導(dǎo)致的技術(shù)門濫高、升級困難、安裝包過大等問題。并且,可以簡化第三方軟件在windows平臺和非windows平臺使用網(wǎng)頁瀏覽增加軟件功能的開發(fā)難度,使任意第三方軟件可以使用本發(fā)明提供的網(wǎng)頁訪問服務(wù),輕易的訪問頁面,增強(qiáng)軟件用戶體驗。需要說明的是,對于前述的方法實施例,為了簡單描述,故將其都表述為一系列的動作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本申請并不受所描述的動作順序的限制,因為依據(jù)本申請,某些步驟可以采用其他順序或者同時進(jìn)行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說明書中所描述的實施例均屬于優(yōu)選實施例,所涉及的動作并不一定是本申請所必需的?;谏鲜龇椒▽嵤├恼f明,本申請還提供了相應(yīng)的網(wǎng)頁瀏覽裝置實施例。參照圖3,是本申請實施例所述一種基于webkit核心的跨進(jìn)程網(wǎng)頁瀏覽裝置的結(jié)構(gòu)圖。 所述網(wǎng)頁瀏覽裝置可以包括以下接口和模塊自定義接口10和加載模塊20,所述加載模塊20通過自定義接口 10加載動態(tài)鏈接庫;第一調(diào)用模塊30,用于調(diào)用所述動態(tài)鏈接庫來創(chuàng)建頁面對象;第二調(diào)用模塊40,用于通過調(diào)用所述頁面對象中的頁面創(chuàng)建方法,通知webkit瀏覽器創(chuàng)建頁面窗口,并完成該頁面窗口中頁面內(nèi)容的渲染和展現(xiàn)。其中,所述第一調(diào)用模塊30具體可以包括以下子模塊工廠方法獲取子模塊,用于調(diào)用所述動態(tài)鏈接庫來獲得工廠方法;工廠對象創(chuàng)建子模塊,用于調(diào)用所述工廠方法創(chuàng)建工廠對象;頁面對象創(chuàng)建子模塊,用于調(diào)用所述工廠對象創(chuàng)建頁面對象。其中,所述第二調(diào)用模塊40具體可以包括以下子模塊構(gòu)造子模塊,用于構(gòu)造參數(shù)對象,并在所述參數(shù)對象中填充目標(biāo)訪問的網(wǎng)址和窗口句柄;參數(shù)賦值子模塊,用于將填充后的參數(shù)對象作為參數(shù)值傳遞給所述頁面對象中的頁面創(chuàng)建方法;
·
頁面創(chuàng)建子模塊,用于通過調(diào)用參數(shù)賦值后的頁面創(chuàng)建方法,通知webkit瀏覽器創(chuàng)建頁面窗口,并完成該頁面窗口中頁面內(nèi)容的渲染和展現(xiàn)。其中,所述加載模塊20具體可以包括以下子模塊注冊表訪問子模塊,用于通過自定義接口訪問注冊表;路徑查找子模塊,用于查找注冊表中所述動態(tài)鏈接庫的存儲路徑;加載子模塊,用于從所述存儲路徑加載所述動態(tài)鏈接庫。在另一實施例中,如圖4所示優(yōu)選地,所述裝置還可以包括導(dǎo)航調(diào)用模塊50,用于通過調(diào)用所述頁面對象中的Navigate方法,通知webkit瀏覽器在該頁面窗口中進(jìn)行頁面跳轉(zhuǎn)操作。優(yōu)選地,所述裝置還可以包括停止調(diào)用模塊60,用于通過調(diào)用所述頁面對象中的Stop方法,通知webkit瀏覽器停止該頁面窗口中頁面內(nèi)容的渲染和展現(xiàn)。優(yōu)選地,所述裝置還可以包括刷新調(diào)用模塊70,用于通過調(diào)用所述頁面對象中的Reload方法,通知webkit瀏覽器刷新該頁面窗口中的頁面內(nèi)容。優(yōu)選地,所述裝置還可以包括頁面后退調(diào)用模塊80,用于通過調(diào)用所述頁面對象中的GoBack方法,通知webkit瀏覽器在該頁面窗口中進(jìn)行頁面后退操作;頁面前進(jìn)調(diào)用模塊90,用于通過調(diào)用所述頁面對象中的GoForward方法,通知webkit瀏覽器在該頁面窗口中進(jìn)行頁面前進(jìn)操作。優(yōu)選地,所述裝置還可以包括銷毀調(diào)用模塊100,用于通過調(diào)用所述頁面對象中的Destroy方法,通知webkit瀏覽器銷毀該頁面對象。對于上述圖3和圖4所示的網(wǎng)頁瀏覽裝置實施例而言,由于其與方法實施例基本相似,所以描述的比較簡單,相關(guān)之處參見圖I和圖2所示方法實施例的部分說明即可。基于以上內(nèi)容,本申請還提供了另外一種基于Webkit內(nèi)核提供網(wǎng)頁瀏覽的方法和裝置的實施例,下面分別通過圖5和圖6進(jìn)行說明。參照圖5所示,是本申請另一實施例所述基于webkit核心的跨進(jìn)程網(wǎng)頁瀏覽方法的流程圖。步驟501,設(shè)置一 Webkit內(nèi)核的頁面對象導(dǎo)出接口 ;步驟502,在第一獨立進(jìn)程中啟動Webkit內(nèi)核;步驟503,在第二獨立進(jìn)程中調(diào)用所述頁面對象導(dǎo)出接口創(chuàng)建基于Webkit內(nèi)核的頁面對象;所述第一獨立進(jìn)程和第二獨立進(jìn)程是兩個進(jìn)程,換而言之,頁面的瀏覽和Webkit內(nèi)核的運行相互獨立,互不影響。具體的,調(diào)用所述頁面對象導(dǎo)出接口創(chuàng)建基于Webkit內(nèi)核的頁面對象,可包括以下子步驟子步驟1,獲得所述頁面對象導(dǎo)出接口提供的工廠方法;子步驟2,調(diào)用所述工廠方法創(chuàng)建工廠對象;子步驟3,調(diào)用所述工廠對象創(chuàng)建基于Webkit內(nèi)核的頁面對象。步驟504,通過所述頁面對象調(diào)用所述第一獨立進(jìn)程中的Weblkit內(nèi)核,進(jìn)行基于Webkit內(nèi)核的頁面瀏覽操作和頁面內(nèi)容加載。所述第二獨立進(jìn)程可通過調(diào)用所述頁面對象實現(xiàn)與第一獨立進(jìn)程中Webkit內(nèi)核的通信,具體的,所述通過所述頁面對象調(diào)用所述第一獨立進(jìn)程中的Weblkit內(nèi)核,可包括以下子步驟子步驟1,構(gòu)造參數(shù)對象,并在所述參數(shù)對象中填充目標(biāo)訪問的網(wǎng)址和窗口句柄;子步驟2,將填充后的參數(shù)對象作為參數(shù)值傳遞給所述頁面對象提供的頁面創(chuàng)建方法;子步驟3,通過調(diào)用參數(shù)賦值后的頁面創(chuàng)建方法,實現(xiàn)與所述獨立進(jìn)程中的Weblkit內(nèi)核進(jìn)行通信。第二獨立進(jìn)程調(diào)用Weblkit內(nèi)核可實現(xiàn)頁面瀏覽操作和頁面內(nèi)容加載,下面分別詳細(xì)說明具體的頁面內(nèi)容加載過程,以及都有哪些頁面瀏覽操作。I、頁面內(nèi)容加載具體的,通過所述頁面對象調(diào)用所述第一獨立進(jìn)程中的Weblkit內(nèi)核,進(jìn)行基于Webkit內(nèi)核的頁面內(nèi)容加載,具體可包括以下處理通過所述頁面對象提供的頁面創(chuàng)建方法,調(diào)用所述第一獨立進(jìn)程中的Weblkit內(nèi)核創(chuàng)建頁面窗口;在該頁面窗口中進(jìn)行基于Webkit內(nèi)核的頁面內(nèi)容加載。進(jìn)一步的,在第二獨立進(jìn)程中進(jìn)行所述頁面內(nèi)容加載;并且,所述加載包括以下處理步驟I)根據(jù)接收到的http請求獲取頁面內(nèi)容;2)對獲取到的頁面內(nèi)容進(jìn)行解析;3)對解析結(jié)果執(zhí)行js操作;4)根據(jù)js操作結(jié)果建立dom樹;5)對dom樹進(jìn)行渲染和展現(xiàn)。
、
2、頁面瀏覽操作所述頁面瀏覽操作可包括
頁面跳轉(zhuǎn),和/或,頁面窗口移動,和/或,頁面停止加載,和/或,頁面刷新,和/或,頁面的前進(jìn)、后退,和/或,頁面銷毀。進(jìn)一步地對于頁面跳轉(zhuǎn)操作,可通過所述頁面對象提供的Navigate方法,調(diào)用所述獨立進(jìn)程中的Weblkit內(nèi)核在該頁面窗口中進(jìn)行頁面跳轉(zhuǎn)操作;對于頁面窗口移動操作,可通過所述頁面對象提供的Reposition方法,調(diào)用所述獨立進(jìn)程中的Weblkit內(nèi)核告知所述頁面窗口跟隨外部窗口的移動而移動;對于頁面停止加載操作,可通過所述頁面對象提供的Stop方法,調(diào)用所述獨立進(jìn)程中的Weblkit內(nèi)核停止在該頁面窗口中加載頁面內(nèi)容;
對于頁面刷新操作,可通過所述頁面對象提供的Reload方法,調(diào)用所述獨立進(jìn)程中的Weblkit內(nèi)核器刷新該頁面窗口中的頁面內(nèi)容;對于頁面的前進(jìn)操作,可通過所述頁面對象提供的GoBack方法,調(diào)用所述獨立進(jìn)程中的Weblkit內(nèi)核在該頁面窗口中進(jìn)行頁面后退操作;對于頁面的后退操作,可通過所述頁面對象提供的GoForward方法,調(diào)用所述獨立進(jìn)程中的Weblkit內(nèi)核在該頁面窗口中進(jìn)行頁面前進(jìn)操作;對于頁面銷毀操作,可通過所述頁面對象提供的Destroy方法,調(diào)用所述獨立進(jìn)程中的Weblkit內(nèi)核銷毀該頁面對象?;趫D5實施例的內(nèi)容,優(yōu)選地,可通過動態(tài)鏈接庫(dll服務(wù))提供Webkit內(nèi)核的頁面對象導(dǎo)出接口,該導(dǎo)出接口是動態(tài)鏈接庫提供的用于與Webkit內(nèi)核通信的內(nèi)部接口。此外,所述動態(tài)鏈接庫還提供了用于與第三方軟件通信的外部接口。進(jìn)一步地,在第二獨立進(jìn)程調(diào)用所述頁面對象導(dǎo)出接口創(chuàng)建頁面對象之前,還可以包括以下處理訪問注冊表,查找注冊表中所述動態(tài)鏈接庫的存儲路徑;從所述存儲路徑加載所述動態(tài)鏈接庫。優(yōu)選地,還可包括以下處理Webkit內(nèi)核升級后更新所述動態(tài)鏈接庫的版本,并將新版本的動態(tài)鏈接庫保存到不同于舊版本的存儲路徑。而且,多個第二獨立進(jìn)程可從同一存儲路徑加載同一所述動態(tài)鏈接庫。即在進(jìn)行新版本升級安裝時不影響舊版本的運行使用,新舊版本可以同時使用,對第三方軟件完全不可見。并且,多個第三方軟件可同時實現(xiàn)基于Webkit內(nèi)核的網(wǎng)頁瀏覽。參照圖6所示,是本申請另一實施例所述一種基于webkit核心的跨進(jìn)程網(wǎng)頁瀏覽裝置的結(jié)構(gòu)圖。所述基于Webkit內(nèi)核提供網(wǎng)頁瀏覽的裝置,具體可包括以下模塊接口導(dǎo)出模塊61,用于設(shè)置一 Webkit內(nèi)核的頁面對象導(dǎo)出接口 ;內(nèi)核啟動模塊62,用于在第一獨立進(jìn)程中啟動Webkit內(nèi)核;第一調(diào)用模塊63,用于在第二獨立進(jìn)程中調(diào)用所述頁面對象導(dǎo)出接口創(chuàng)建基于Webkit內(nèi)核的頁面對象;并第二調(diào)用模塊64,用于通過所述頁面對象調(diào)用所述第一獨立進(jìn)程中的Weblkit內(nèi)核,進(jìn)行基于Webkit內(nèi)核的頁面瀏覽操作和頁面內(nèi)容加載。優(yōu)選地,所述第一調(diào)用模塊63具體可包括工廠方法獲取子模塊,用于獲得所述頁面對象導(dǎo)出接口提供的工廠方法;工廠對象創(chuàng)建子模塊,用于調(diào)用所述工廠方法創(chuàng)建工廠對象;頁面對象創(chuàng)建子模塊,用于調(diào)用所述工廠對象創(chuàng)建基于Webkit內(nèi)核的頁面對象。優(yōu)選地,所述第二調(diào)用模塊64可通過所述頁面對象提供的頁面創(chuàng)建方法,調(diào)用所述第一獨立進(jìn)程中的Weblkit內(nèi)核創(chuàng)建頁面窗口,并在該頁面窗口中進(jìn)行基于Webkit內(nèi)核的頁面內(nèi)容加載。優(yōu)選地,在第二獨立進(jìn)程中進(jìn)行所述頁面內(nèi)容加載,所述加載包括根據(jù)接收到的http請求獲取頁面內(nèi)容;對獲取到的頁面內(nèi)容進(jìn)行解析;對解析結(jié)果執(zhí)行js操作;根據(jù)js操作結(jié)果建立dom樹;對dom樹進(jìn)行渲染和展現(xiàn)。優(yōu)選地,所述頁面瀏覽操作包括頁面跳轉(zhuǎn),和/或,頁面窗口移動,和/或,頁面停止加載,和/或,頁面刷新,和/或,頁面的前進(jìn)、后退,和/或,頁面銷毀。優(yōu)選地,所述第二調(diào)用模塊64具體可包括導(dǎo)航調(diào)用子模塊,用于通過所述頁面對象提供的Navigate方法,調(diào)用所述獨立進(jìn)程中的Weblkit內(nèi)核在該頁面窗口中進(jìn)行頁面跳轉(zhuǎn)操作; 和/或,移動調(diào)用子模塊,用于通過所述頁面對象提供的R印osition方法,調(diào)用所述獨立進(jìn)程中的Weblkit內(nèi)核告知所述頁面窗口跟隨外部窗口的移動而移動;和/或,停止調(diào)用子模塊,用于通過所述頁面對象提供的Stop方法,調(diào)用所述獨立進(jìn)程中的Weblkit內(nèi)核停止在該頁面窗口中加載頁面內(nèi)容;和/或,刷新調(diào)用子模塊,用于通過所述頁面對象提供的Reload方法,調(diào)用所述獨立進(jìn)程中的Weblkit內(nèi)核器刷新該頁面窗口中的頁面內(nèi)容;和/或,頁面后退調(diào)用子模塊,用于通過所述頁面對象提供的GoBack方法,調(diào)用所述獨立進(jìn)程中的Weblkit內(nèi)核在該頁面窗口中進(jìn)行頁面后退操作;和/或,頁面前進(jìn)調(diào)用子模塊,用于通過所述頁面對象提供的GoForward方法,調(diào)用所述獨立進(jìn)程中的Weblkit內(nèi)核在該頁面窗口中進(jìn)行頁面前進(jìn)操作;和/或,銷毀調(diào)用子模塊,用于通過所述頁面對象提供的Destroy方法,調(diào)用所述獨立進(jìn)程中的Weblkit內(nèi)核銷毀該頁面對象。優(yōu)選地,所述第二調(diào)用模塊64還可包括 構(gòu)造子模塊,用于構(gòu)造參數(shù)對象,并在所述參數(shù)對象中填充目標(biāo)訪問的網(wǎng)址和窗口句柄;參數(shù)賦值子模塊,用于將填充后的參數(shù)對象作為參數(shù)值傳遞給所述頁面對象提供的頁面創(chuàng)建方法;頁面創(chuàng)建子模塊,用于通過調(diào)用參數(shù)賦值后的頁面創(chuàng)建方法,實現(xiàn)與所述獨立進(jìn)程中的Weblkit內(nèi)核進(jìn)行通信。優(yōu)選地,所述接口導(dǎo)出模塊61可通過動態(tài)鏈接庫提供Webkit內(nèi)核的頁面對象導(dǎo)出接口。優(yōu)選地,所述裝置還可包括路徑查找模塊65,用于訪問注冊表,查找注冊表中所述動態(tài)鏈接庫的存儲路徑;加載模塊66,用于從所述存儲路徑加載所述動態(tài)鏈接庫。優(yōu)選地,所述裝置還可包括更新模塊67,用于Webkit內(nèi)核升級后更新所述動態(tài)鏈接庫的版本,并將新版本的動態(tài)鏈接庫保存到不同于舊版本的存儲路徑。
優(yōu)選地,多個第二獨立進(jìn)程通過從同一存儲路徑加載同一所述動態(tài)鏈接庫。對于上述圖6所示的網(wǎng)頁瀏覽裝置實施例而言,由于其與方法實施例基本相似,所以描述的比較簡單,相關(guān)之處參見圖5所示方法實施例的部分說明即可。本說明書中的各個實施例均采用遞進(jìn)的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似的部分互相參見即可。本申請實施例可以實施在任何支持圖形處理、互聯(lián)網(wǎng)內(nèi)容擷取和渲染的裝置(或多個裝置)上。這些裝置包括但不限于個人計算機(jī)、集群服務(wù)器、移動電話、工作站、嵌入式系統(tǒng)、游戲機(jī)、電視、機(jī)頂盒,或任何其它支持計算機(jī)圖形和內(nèi)容顯示的計算裝置。這些裝置可以包括但不限于擁有執(zhí)行和儲存指令的一個或多個處理器和存儲器的裝置。這些裝置可以包括軟件、固件和硬件。軟件可以包括一個或多個應(yīng)用程序和操作系統(tǒng)。硬件可以包括但不限于處理器、存儲器及顯示器。本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本申請的實施例可提供為方法、系統(tǒng)、或計算機(jī)程序產(chǎn)品。因此,本申請可采用完全硬件實施例、完全軟件實施例、或結(jié)合軟件和硬件方面的實施例的形式。而且,本申請可采用在一個或多個其中包含有計算機(jī)可用程序代碼的計算機(jī)可用存儲介質(zhì)(包括但不限于磁盤存儲器、CD-ROM、光學(xué)存儲器等)上實施的計算機(jī)程序產(chǎn)品的形式。本申請是參照根據(jù)本申請實施例的方法、設(shè)備(系統(tǒng))、和計算機(jī)程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計算機(jī)程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計算機(jī)程序指令到通用計算機(jī)、專用計算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個機(jī)器,使得通過計算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。這些計算機(jī)程序指令也可存儲在能引導(dǎo)計算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計算機(jī)可讀存儲器中,使得存儲在該計算機(jī)可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。這些計算機(jī)程序指令也可裝載到計算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計算機(jī)實現(xiàn)的處理,從而在計算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。 以上對本申請所提供的一種基于Webkit內(nèi)核提供網(wǎng)頁瀏覽的方法及裝置,進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個例對本申請的原理及實施方式進(jìn)行了闡述,以上實施例
的說明只是用于幫助理解本申請的方法及其核心思想;同時,對于本領(lǐng)域的一般技術(shù)人員,依據(jù)本申請的思想,在具體實施方式
及應(yīng)用范圍上均會有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對本申請的限制。
權(quán)利要求
1.一種基于Webkit內(nèi)核提供網(wǎng)頁瀏覽的方法,其特征在于,包括 設(shè)置一 Webkit內(nèi)核的頁面對象導(dǎo)出接口 ; 在第一獨立進(jìn)程中啟動Webkit內(nèi)核; 在第二獨立進(jìn)程中調(diào)用所述頁面對象導(dǎo)出接口創(chuàng)建基于Webkit內(nèi)核的頁面對象;并通過所述頁面對象調(diào)用所述第一獨立進(jìn)程中的Weblkit內(nèi)核,進(jìn)行基于Webkit內(nèi)核的頁面瀏覽操作和頁面內(nèi)容加載。
2.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述調(diào)用所述頁面對象導(dǎo)出接口創(chuàng)建基于Webkit內(nèi)核的頁面對象,包括 獲得所述頁面對象導(dǎo)出接口提供的工廠方法; 調(diào)用所述工廠方法創(chuàng)建工廠對象; 調(diào)用所述工廠對象創(chuàng)建基于Webkit內(nèi)核的頁面對象。
3.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述通過所述頁面對象調(diào)用所述第一獨立進(jìn)程中的Weblkit內(nèi)核,進(jìn)行基于Webkit內(nèi)核的頁面內(nèi)容加載,包括 通過所述頁面對象提供的頁面創(chuàng)建方法,調(diào)用所述第一獨立進(jìn)程中的Weblkit內(nèi)核創(chuàng)建頁面窗口; 在該頁面窗口中進(jìn)行基于Webkit內(nèi)核的頁面內(nèi)容加載。
4.根據(jù)權(quán)利要求3述的方法,其特征在于,在第二獨立進(jìn)程中進(jìn)行所述頁面內(nèi)容加載, 所述加載包括 根據(jù)接收到的http請求獲取頁面內(nèi)容; 對獲取到的頁面內(nèi)容進(jìn)行解析; 對解析結(jié)果執(zhí)行js操作; 根據(jù)js操作結(jié)果建立dom樹; 對dom樹進(jìn)行渲染和展現(xiàn)。
5.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述頁面瀏覽操作包括 頁面跳轉(zhuǎn),和/或,頁面窗口移動,和/或,頁面停止加載,和/或,頁面刷新,和/或,頁面的前進(jìn)、后退,和/或,頁面銷毀。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述通過所述頁面對象調(diào)用所述獨立進(jìn)程中的Weblkit內(nèi)核,進(jìn)行基于Webkit內(nèi)核的頁面瀏覽操作,包括 通過所述頁面對象提供的Navigate方法,調(diào)用所述獨立進(jìn)程中的Weblkit內(nèi)核在該頁面窗口中進(jìn)行頁面跳轉(zhuǎn)操作; 和/或,通過所述頁面對象提供的Imposition方法,調(diào)用所述獨立進(jìn)程中的Weblkit內(nèi)核告知所述頁面窗口跟隨外部窗口的移動而移動; 和/或,通過所述頁面對象提供的Stop方法,調(diào)用所述獨立進(jìn)程中的Weblkit內(nèi)核停止在該頁面窗口中加載頁面內(nèi)容; 和/或,通過所述頁面對象提供的Reload方法,調(diào)用所述獨立進(jìn)程中的Weblkit內(nèi)核器刷新該頁面窗口中的頁面內(nèi)容; 和/或,通過所述頁面對象提供的GoBack方法,調(diào)用所述獨立進(jìn)程中的Weblkit內(nèi)核在該頁面窗口中進(jìn)行頁面后退操作; 和/或,通過所述頁面對象提供的GoForward方法,調(diào)用所述獨立進(jìn)程中的Weblkit內(nèi)核在該頁面窗口中進(jìn)行頁面前進(jìn)操作; 和/或,通過所述頁面對象提供的Destroy方法,調(diào)用所述獨立進(jìn)程中的Weblkit內(nèi)核銷毀該頁面對象。
7.根據(jù)權(quán)利要求I至6任一所述的方法,其特征在于,所述通過所述頁面對象調(diào)用所述第一獨立進(jìn)程中的Weblkit內(nèi)核,包括 構(gòu)造參數(shù)對象,并在所述參數(shù)對象中填充目標(biāo)訪問的網(wǎng)址和窗口句柄; 將填充后的參數(shù)對象作為參數(shù)值傳遞給所述頁面對象提供的頁面創(chuàng)建方法; 通過調(diào)用參數(shù)賦值后的頁面創(chuàng)建方法,實現(xiàn)與所述獨立進(jìn)程中的Weblkit內(nèi)核進(jìn)行通信。
8.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述設(shè)置一Webkit內(nèi)核的頁面對象導(dǎo)出接口,包括 通過動態(tài)鏈接庫提供Webkit內(nèi)核的頁面對象導(dǎo)出接口。
9.根據(jù)權(quán)利要求8所述的方法,其特征在于,調(diào)用所述頁面對象導(dǎo)出接口之前,還包括 訪問注冊表,查找注冊表中所述動態(tài)鏈接庫的存儲路徑; 從所述存儲路徑加載所述動態(tài)鏈接庫I。
10.根據(jù)權(quán)利要求9所述的方法,其特征在于,還包括 Webkit內(nèi)核升級后更新所述動態(tài)鏈接庫的版本,并將新版本的動態(tài)鏈接庫保存到不同于舊版本的存儲路徑。
11.根據(jù)權(quán)利要求10所述的方法,其特征在于 多個第二獨立進(jìn)程從同一存儲路徑加載同一所述動態(tài)鏈接庫。
12.一種基于Webkit內(nèi)核提供網(wǎng)頁瀏覽的裝置,其特征在于,包括 接口導(dǎo)出模塊,用于設(shè)置一 Webkit內(nèi)核的頁面對象導(dǎo)出接口 ; 內(nèi)核啟動模塊,用于在第一獨立進(jìn)程中啟動Webkit內(nèi)核; 第一調(diào)用模塊,用于在第二獨立進(jìn)程中調(diào)用所述頁面對象導(dǎo)出接口創(chuàng)建基于Webkit內(nèi)核的頁面對象;并 第二調(diào)用模塊,用于通過所述頁面對象調(diào)用所述第一獨立進(jìn)程中的Weblkit內(nèi)核,進(jìn)行基于Webkit內(nèi)核的頁面瀏覽操作和頁面內(nèi)容加載。
13.根據(jù)權(quán)利要求12所述的裝置,其特征在于,所述第一調(diào)用模塊包括 工廠方法獲取子模塊,用于獲得所述頁面對象導(dǎo)出接口提供的工廠方法; 工廠對象創(chuàng)建子模塊,用于調(diào)用所述工廠方法創(chuàng)建工廠對象; 頁面對象創(chuàng)建子模塊,用于調(diào)用所述工廠對象創(chuàng)建基于Webkit內(nèi)核的頁面對象。
14.根據(jù)權(quán)利要求12所述的裝置,其特征在于 所述第二調(diào)用模塊通過所述頁面對象提供的頁面創(chuàng)建方法,調(diào)用所述第一獨立進(jìn)程中的Weblkit內(nèi)核創(chuàng)建頁面窗口,并在該頁面窗口中進(jìn)行基于Webkit內(nèi)核的頁面內(nèi)容加載。
15.根據(jù)權(quán)利要求14所述的裝置,其特征在于,在第二獨立進(jìn)程中進(jìn)行所述頁面內(nèi)容加載, 所述加載包括 根據(jù)接收到的http請求獲取頁面內(nèi)容;對獲取到的頁面內(nèi)容進(jìn)行解析; 對解析結(jié)果執(zhí)行js操作; 根據(jù)js操作結(jié)果建立dom樹; 對dom樹進(jìn)行渲染和展現(xiàn)。
16.根據(jù)權(quán)利要求14所述的裝置,其特征在于,所述頁面瀏覽操作包括 頁面跳轉(zhuǎn),和/或,頁面窗口移動,和/或,頁面停止加載,和/或,頁面刷新,和/或,頁面的前進(jìn)、后退,和/或,頁面銷毀。
17.根據(jù)權(quán)利要求16所述的裝置,其特征在于,所述第二調(diào)用模塊包括 導(dǎo)航調(diào)用子模塊,用于通過所述頁面對象提供的Navigate方法,調(diào)用所述獨立進(jìn)程中的Weblkit內(nèi)核在該頁面窗口中進(jìn)行頁面跳轉(zhuǎn)操作; 和/或,移動調(diào)用子模塊,用于通過所述頁面對象提供的R印osition方法,調(diào)用所述獨立進(jìn)程中的Weblkit內(nèi)核告知所述頁面窗口跟隨外部窗口的移動而移動; 和/或,停止調(diào)用子模塊,用于通過所述頁面對象提供的Stop方法,調(diào)用所述獨立進(jìn)程中的Weblkit內(nèi)核停止在該頁面窗口中加載頁面內(nèi)容; 和/或,刷新調(diào)用子模塊,用于通過所述頁面對象提供的Reload方法,調(diào)用所述獨立進(jìn)程中的Weblkit內(nèi)核器刷新該頁面窗口中的頁面內(nèi)容; 和/或,頁面后退調(diào)用子模塊,用于通過所述頁面對象提供的GoBack方法,調(diào)用所述獨立進(jìn)程中的Weblkit內(nèi)核在該頁面窗口中進(jìn)行頁面后退操作; 和/或,頁面前進(jìn)調(diào)用子模塊,用于通過所述頁面對象提供的GoForward方法,調(diào)用所述獨立進(jìn)程中的Weblkit內(nèi)核在該頁面窗口中進(jìn)行頁面前進(jìn)操作; 和/或,銷毀調(diào)用子模塊,用于通過所述頁面對象提供的Destroy方法,調(diào)用所述獨立進(jìn)程中的Weblkit內(nèi)核銷毀該頁面對象。
18.根據(jù)權(quán)利要求12至17任一所述的裝置,其特征在于,所述第二調(diào)用模塊包括 構(gòu)造子模塊,用于構(gòu)造參數(shù)對象,并在所述參數(shù)對象中填充目標(biāo)訪問的網(wǎng)址和窗口句柄; 參數(shù)賦值子模塊,用于將填充后的參數(shù)對象作為參數(shù)值傳遞給所述頁面對象提供的頁面創(chuàng)建方法; 頁面創(chuàng)建子模塊,用于通過調(diào)用參數(shù)賦值后的頁面創(chuàng)建方法,實現(xiàn)與所述獨立進(jìn)程中的Weblkit內(nèi)核進(jìn)行通信。
19.根據(jù)權(quán)利要求12所述的裝置,其特征在于 所述接口導(dǎo)出模塊通過動態(tài)鏈接庫提供Webkit內(nèi)核的頁面對象導(dǎo)出接口。
20.根據(jù)權(quán)利要求19所述的裝置,其特征在于,還包括 路徑查找模塊,用于訪問注冊表,查找注冊表中所述動態(tài)鏈接庫的存儲路徑; 加載模塊,用于從所述存儲路徑加載所述動態(tài)鏈接庫。
21.根據(jù)權(quán)利要求20所述的裝置,其特征在于,還包括 更新模塊,用于Webkit內(nèi)核升級后更新所述動態(tài)鏈接庫的版本,并將新版本的動態(tài)鏈接庫保存到不同于舊版本的存儲路徑。
22.根據(jù)權(quán)利要求21所述的裝置,其特征在于 多個第二獨立進(jìn)程通過從同一存儲路徑加載同一所述動態(tài)鏈接庫。
全文摘要
本申請?zhí)峁┝艘环N基于Webkit內(nèi)核提供網(wǎng)頁瀏覽的方法及裝置,以解決瀏覽器中使用Webbrowser內(nèi)核控件而帶來的安全性弱的問題。所述方法包括設(shè)置一Webkit內(nèi)核的頁面對象導(dǎo)出接口;在第一獨立進(jìn)程中啟動Webkit內(nèi)核;在第二獨立進(jìn)程中調(diào)用所述頁面對象導(dǎo)出接口創(chuàng)建基于Webkit內(nèi)核的頁面對象;并通過所述頁面對象調(diào)用所述第一獨立進(jìn)程中的Weblkit內(nèi)核,進(jìn)行基于Webkit內(nèi)核的頁面瀏覽操作和頁面內(nèi)容加載。本申請能很好地解決瀏覽器中Webbrowser內(nèi)核版本落后、安全性薄弱、不支持非微軟平臺的問題,和直接使用webkit核心導(dǎo)致的技術(shù)門檻高、升級困難、安裝包過大等問題。
文檔編號G06F9/44GK102681850SQ201210139290
公開日2012年9月19日 申請日期2012年5月7日 優(yōu)先權(quán)日2012年5月7日
發(fā)明者任寰, 劉慶平 申請人:奇智軟件(北京)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
新田县| 会昌县| 南陵县| 南川市| 农安县| 什邡市| 烟台市| 五峰| 饶阳县| 临西县| 西宁市| 金沙县| 新安县| 陈巴尔虎旗| 玉屏| 犍为县| 温州市| 巩留县| 五大连池市| 敖汉旗| 万宁市| 阳朔县| 墨脱县| 江源县| 静安区| 边坝县| 富蕴县| 平江县| 来凤县| 静乐县| 革吉县| 彭山县| 金门县| 凉城县| 自治县| 湖州市| 乌恰县| 绵阳市| 晋中市| 阿勒泰市| 泊头市|