幾個基本的瀏覽器操作都已經(jīng)包括在其中。
[0116] 第三方軟件實現(xiàn)所述數(shù)目較少的自定義接口后,通過自定義接口加載動態(tài)鏈接庫 dll,具體的加載方法如下:
[0117] 通過自定義接口訪問注冊表;
[0118] 查找注冊表中所述動態(tài)鏈接庫dll的存儲路徑;
[0119] 從所述存儲路徑加載所述動態(tài)鏈接庫dl 1。
[0120] 步驟102,調(diào)用所述動態(tài)鏈接庫來創(chuàng)建頁面對象;
[0121] 通過調(diào)用動態(tài)鏈接庫提供的內(nèi)部接口,就可以實現(xiàn)與Webkit內(nèi)核的通信。
[0122] 其中,使用工廠模式來創(chuàng)建頁面對象。工廠模式就是專門負責將大量有共同接口 的類實例化,而且不必事先知道每次是要實例化哪一個類的模式。它定義一個用于創(chuàng)建對 象的接口,由子類決定實例化哪一個類。
[0123] 具體子步驟如下:
[0124] 子步驟1,調(diào)用所述動態(tài)鏈接庫來獲得工廠方法;
[0125] 子步驟2,調(diào)用所述工廠方法創(chuàng)建工廠對象;
[0126] 子步驟3,調(diào)用所述工廠對象創(chuàng)建頁面對象。
[0127] 步驟103,通過調(diào)用所述頁面對象中的頁面創(chuàng)建方法,通知webkit瀏覽器創(chuàng)建頁 面窗口,并完成該頁面窗口中頁面內(nèi)容的渲染和展現(xiàn)。
[0128] 具體子步驟如下:
[0129] 子步驟1,構(gòu)造參數(shù)對象,并在所述參數(shù)對象中填充目標訪問的網(wǎng)址和窗口句柄;
[0130] 子步驟2,將填充后的參數(shù)對象作為參數(shù)值傳遞給所述頁面對象中的頁面創(chuàng)建方 法;
[0131] 子步驟3,通過調(diào)用參數(shù)賦值后的頁面創(chuàng)建方法,通知webkit瀏覽器創(chuàng)建頁面窗 口,并完成該頁面窗口中頁面內(nèi)容的渲染和展現(xiàn)。
[0132] 頁面對象中提供了頁面創(chuàng)建方法,該方法中設有參數(shù),參數(shù)賦值為目標訪問的 網(wǎng)址和窗口句柄后,通過調(diào)用該方法即可與webkit內(nèi)核通信,參數(shù)值傳給webkit內(nèi)核, webkit內(nèi)核按照參數(shù)值訪問目標網(wǎng)址,并創(chuàng)建頁面窗口,完成該頁面窗口中頁面內(nèi)容的渲 染和展現(xiàn)。
[0133] 最后,瀏覽器的相關回調(diào)還可通過對應的函數(shù)調(diào)用通知第三方軟件。
[0134] 下面通過一個具體的例子詳細解釋上述內(nèi)容。
[0135] 接口的內(nèi)容和用法如下:
[0136] 提供一個工廠方法,供第三方軟件調(diào)用:
[0137] extern"C" {
[0138] DLL_INTERFACE WebAppFactory^GetffebAppFactory();
[0139] };
[0140] 第三方軟件可通過LoadLibrary函數(shù)加載dl 1服務(動態(tài)鏈接庫),并通過 GetProcAddress函數(shù)獲得工廠方法GetWebAppFactory,并創(chuàng)建工廠對象WebAppFactory, 進而得到一個頁面對象WebAppTabWrapper,其接口如下:
[0141]
【主權(quán)項】
1. 一種基于Webkit內(nèi)核提供網(wǎng)頁瀏覽的方法,其特征在于,包括: 設置一Webkit內(nèi)核的頁面對象導出接口; 在第一獨立進程中啟動Webkit內(nèi)核; 在第二獨立進程中調(diào)用所述頁面對象導出接口創(chuàng)建基于Webkit內(nèi)核的頁面對象;并 通過所述頁面對象調(diào)用所述第一獨立進程中的Weblkit內(nèi)核,進行基于Webkit內(nèi)核的 頁面瀏覽操作和頁面內(nèi)容加載。
2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述調(diào)用所述頁面對象導出接口創(chuàng)建基 于Webkit內(nèi)核的頁面對象,包括: 獲得所述頁面對象導出接口提供的工廠方法; 調(diào)用所述工廠方法創(chuàng)建工廠對象; 調(diào)用所述工廠對象創(chuàng)建基于Webkit內(nèi)核的頁面對象。
3. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述通過所述頁面對象調(diào)用所述第一獨 立進程中的Weblkit內(nèi)核,進行基于Webkit內(nèi)核的頁面內(nèi)容加載,包括: 通過所述頁面對象提供的頁面創(chuàng)建方法,調(diào)用所述第一獨立進程中的Weblkit內(nèi)核創(chuàng) 建頁面窗口; 在該頁面窗口中進行基于Webkit內(nèi)核的頁面內(nèi)容加載。
4. 根據(jù)權(quán)利要求3述的方法,其特征在于,在第二獨立進程中進行所述頁面內(nèi)容加載, 所述加載包括: 根據(jù)接收到的http請求獲取頁面內(nèi)容; 對獲取到的頁面內(nèi)容進行解析; 對解析結(jié)果執(zhí)行js操作; 根據(jù)js操作結(jié)果建立dom樹; 對dom樹進行植染和展現(xiàn)。
5. 根據(jù)權(quán)利要求3所述的方法,其特征在于,所述頁面瀏覽操作包括: 頁面跳轉(zhuǎn),和/或,頁面窗口移動,和/或,頁面停止加載,和/或,頁面刷新,和/或,頁 面的前進、后退,和/或,頁面銷毀。
6. 根據(jù)權(quán)利要求5所述的方法,其特征在于,所述通過所述頁面對象調(diào)用所述獨立進 程中的Weblkit內(nèi)核,進行基于Webkit內(nèi)核的頁面瀏覽操作,包括: 通過所述頁面對象提供的Navigate方法,調(diào)用所述獨立進程中的Weblkit內(nèi)核在該頁 面窗口中進行頁面跳轉(zhuǎn)操作; 和/或,通過所述頁面對象提供的Reposition方法,調(diào)用所述獨立進程中的Weblkit內(nèi)核告知所述頁面窗口跟隨外部窗口的移動而移動; 和/或,通過所述頁面對象提供的Stop方法,調(diào)用所述獨立進程中的Weblkit內(nèi)核停 止在該頁面窗口中加載頁面內(nèi)容; 和/或,通過所述頁面對象提供的Reload方法,調(diào)用所述獨立進程中的Weblkit內(nèi)核 器刷新該頁面窗口中的頁面內(nèi)容; 和/或,通過所述頁面對象提供的GoBack方法,調(diào)用所述獨立進程中的Weblkit內(nèi)核 在該頁面窗口中進行頁面后退操作; 和/或,通過所述頁面對象提供的GoForward方法,調(diào)用所述獨立進程中的Weblkit內(nèi) 核在該頁面窗口中進行頁面前進操作; 和/或,通過所述頁面對象提供的Destroy方法,調(diào)用所述獨立進程中的Weblkit內(nèi)核 銷毀該頁面對象。
7. 根據(jù)權(quán)利要求1至6任一所述的方法,其特征在于,所述通過所述頁面對象調(diào)用所述 第一獨立進程中的Weblkit內(nèi)核,包括: 構(gòu)造參數(shù)對象,并在所述參數(shù)對象中填充目標訪問的網(wǎng)址和窗口句柄; 將填充后的參數(shù)對象作為參數(shù)值傳遞給所述頁面對象提供的頁面創(chuàng)建方法; 通過調(diào)用參數(shù)賦值后的頁面創(chuàng)建方法,實現(xiàn)與所述獨立進程中的Weblkit內(nèi)核進行通 信。
8. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述設置一Webkit內(nèi)核的頁面對象導出 接口,包括: 通過動態(tài)鏈接庫提供Webkit內(nèi)核的頁面對象導出接口。
9. 根據(jù)權(quán)利要求8所述的方法,其特征在于,調(diào)用所述頁面對象導出接口之前,還包 括: 訪問注冊表,查找注冊表中所述動態(tài)鏈接庫的存儲路徑; 從所述存儲路徑加載所述動態(tài)鏈接庫。
10. -種基于Webkit內(nèi)核提供網(wǎng)頁瀏覽的裝置,其特征在于,包括: 接口導出模塊,用于設置一Webkit內(nèi)核的頁面對象導出接口; 內(nèi)核啟動模塊,用于在第一獨立進程中啟動Webkit內(nèi)核; 第一調(diào)用模塊,用于在第二獨立進程中調(diào)用所述頁面對象導出接口創(chuàng)建基于Webkit內(nèi)核的頁面對象;并 第二調(diào)用模塊,用于通過所述頁面對象調(diào)用所述第一獨立進程中的Weblkit內(nèi)核,進 行基于Webkit內(nèi)核的頁面瀏覽操作和頁面內(nèi)容加載。
【專利摘要】本申請?zhí)峁┝艘环N基于Webkit內(nèi)核提供網(wǎng)頁瀏覽的方法及裝置,以解決瀏覽器中使用Webbrowser內(nèi)核控件而帶來的安全性弱的問題。所述方法包括:設置一Webkit內(nèi)核的頁面對象導出接口;在第一獨立進程中啟動Webkit內(nèi)核;在第二獨立進程中調(diào)用所述頁面對象導出接口創(chuàng)建基于Webkit內(nèi)核的頁面對象;并通過所述頁面對象調(diào)用所述第一獨立進程中的Weblkit內(nèi)核,進行基于Webkit內(nèi)核的頁面瀏覽操作和頁面內(nèi)容加載。本申請能很好地解決瀏覽器中Webbrowser內(nèi)核版本落后、安全性薄弱、不支持非微軟平臺的問題,和直接使用webkit核心導致的技術門檻高、升級困難、安裝包過大等問題。
【IPC分類】G06F9-44
【公開號】CN104731598
【申請?zhí)枴緾N201510145521
【發(fā)明人】劉慶平, 任寰
【申請人】北京奇虎科技有限公司, 奇智軟件(北京)有限公司
【公開日】2015年6月24日
【申請日】2012年5月7日