在web頁面上實現(xiàn)本地操作的方法和裝置制造方法
【專利摘要】本發(fā)明公開了一種在web頁面上實現(xiàn)本地操作的方法和裝置,屬于web【技術(shù)領域】。所述方法應用于一電子設備中,該電子設備包括一顯示單元且具有HTML運行環(huán)境,所述方法包括:在HTML運行環(huán)境中通過地址信息加載web頁面;在加載頁面過程中,獲得用于表征所述電子設備的本地資源的情況的標識信息;獲得操作請求,該操作請求用于表征操作本地資源的第一資源的請求;根據(jù)所述操作請求,以第一資源響應該操作請求;在顯示單元上顯示第一資源響應所述操作請求的響應結(jié)果。所述裝置包括:加載單元、獲取單元、響應單元和顯示單元。本發(fā)明在web頁面上實現(xiàn)了執(zhí)行本地操作,提高了javascript代碼的本地調(diào)用能力。
【專利說明】在web頁面上實現(xiàn)本地操作的方法和裝置
【技術(shù)領域】
[0001]本發(fā)明涉及web【技術(shù)領域】,特別涉及一種在web頁面上實現(xiàn)本地操作的方法和裝置。
【背景技術(shù)】
[0002]JavaScript是一種基于對象和事件驅(qū)動并具有相對安全性的客戶端腳本語言,廣泛應用于客戶端的Web開發(fā)。JavaScript常用來給超文本標記語言(英文=HyperTextMarkup Language,縮寫:HTML)網(wǎng)頁添加動態(tài)功能,比如響應用戶的各種操作等等,JavaScript也可以用于其他場合,如服務器端編程等等。
[0003]JavaScript引擎是能夠閱讀并執(zhí)行JavaScript源代碼的解釋器,現(xiàn)多用于網(wǎng)頁瀏覽器中,如 Apple Safari4 的 Nitro, Chrome 瀏覽器的 V8 和 Mozilla Firefox3.5 的TraceMonkey 等等。
[0004]在Chrome瀏覽器中,由Javascript引擎V8負責解析和運行Javascript代碼。其中,Javascript引擎V8運行在Chrome瀏覽器的渲染(英文:render)進程下,出于安全的考慮,通常將該render進程置入沙箱之中,以限制Javascript代碼只能在沙箱中運行,從而提高瀏覽器的安全性。
[0005]但是,由于Javascript代碼只能在沙箱中運行,因此,web頁面上的javascript代碼執(zhí)行本地調(diào)用的能力非常微弱,目前還無法實現(xiàn)對本地文件的訪問。
【發(fā)明內(nèi)容】
[0006]為了提高javascript代碼的本地調(diào)用能力,本發(fā)明提供了一種在web頁面上實現(xiàn)本地操作的方法和裝置。所述技術(shù)方案如下:
[0007]—方面,本發(fā)明提供了一種在web頁面上實現(xiàn)本地操作的方法,所述方法應用于一電子設備中,所述電子設備包括一顯示單元以及所述電子設備具有超文本標記語言HTML運行環(huán)境,所述方法包括:
[0008]在所述HTML運行環(huán)境中通過地址信息加載web頁面;
[0009]在加載所述web頁面的過程中,獲得用于表征所述電子設備的本地資源的情況的標識信息;
[0010]獲得操作請求,所述操作請求用于表征操作所述本地資源的第一資源的請求;
[0011]根據(jù)所述操作請求,以所述第一資源響應所述操作請求;
[0012]在所述顯示單元上顯示所述第一資源響應所述操作請求的響應結(jié)果。
[0013]其中,根據(jù)所述操作請求,以所述第一資源響應所述操作請求,包括:
[0014]當javascript引擎在渲染進程中解析到所述操作請求對應的第一接口時,所述javascript引擎用于解釋javascript腳本,所述第一接口為基于javascript自定義的接口,用于在web頁面上操作所述第一資源,且所述javascript引擎中注冊有所述第一接口,則所述javascript引擎根據(jù)所述第一接口向主進程發(fā)送進程間通信IPC消息,請求在所述web頁面上操作所述本地的第一資源;
[0015]在所述主進程中,根據(jù)收到的所述IPC消息調(diào)用本地接口在所述web頁面上操作所述本地的第一資源;
[0016]其中,所述渲染進程處于保護狀態(tài),不具有調(diào)用本地接口的權(quán)限,所述主進程處于非保護狀態(tài),具有調(diào)用本地接口的權(quán)限。
[0017]其中,所述javascript引擎根據(jù)所述第一接口向主進程發(fā)送IPC消息,請求在所述web頁面上操作所述本地的第一資源,包括:
[0018]所述javascript引擎將所述第一接口映射為所述渲染進程能夠運行的本地函數(shù);
[0019]運行所述本地函數(shù),向所述主進程發(fā)送所述IPC消息,請求在所述web頁面上操作所述本地的第一資源。
[0020]其中,所述方法還包括:
[0021]所述javascript引擎根據(jù)所述第一接口向主進程發(fā)送進程間通信IPC消息之前,根據(jù)預設的白名單判斷所述web頁面是否具有操作本地資源的權(quán)限;
[0022]如果確定所述web頁面具有操作本地資源的權(quán)限,則執(zhí)行所述javascript引擎根據(jù)所述第一接口向主進程發(fā)送所述IPC消息的步驟。
[0023]另一方面,本發(fā)明還提供了一種在web頁面上實現(xiàn)本地操作的方法,所述方法應用于一電子設備中,所述電子設備具有超文本標記語言HTML運行環(huán)境,所述方法包括:
[0024]當在所述HTML運行環(huán)境中打開一個web頁面時,javascript引擎在渲染進程中對所述web頁面進行解析;
[0025]當所述javascript引擎解析到第一接口時,所述第一接口為基于javascript自定義的接口,用于在web頁面上操作本地的第一資源,且所述javascript引擎中注冊有所述第一接口,則所述javascript引擎根據(jù)所述第一接口向主進程發(fā)送進程間通信IPC消息,請求在所述web頁面上操作所述本地的第一資源;
[0026]在所述主進程中,根據(jù)收到的所述IPC消息調(diào)用本地接口在所述web頁面上操作所述本地的第一資源;
[0027]其中,所述渲染進程處于保護狀態(tài),不具有調(diào)用本地接口的權(quán)限,所述主進程處于非保護狀態(tài),具有調(diào)用本地接口的權(quán)限。
[0028]其中,所述javascript引擎根據(jù)所述第一接口向主進程發(fā)送進程間通信IPC消息,請求在所述web頁面上操作所述本地的第一資源,包括:
[0029]所述javascript引擎將所述第一接口映射為所述渲染進程能夠運行的本地函數(shù);
[0030]運行所述本地函數(shù),向所述主進程發(fā)送所述IPC消息,請求在所述web頁面上操作所述本地的第一資源。
[0031]其中,所述方法還包括:
[0032]所述javascript引擎根據(jù)所述第一接口向主進程發(fā)送進程間通信IPC消息之前,根據(jù)預設的白名單判斷所述web頁面是否具有操作本地資源的權(quán)限;
[0033]如果確定所述web頁面具有操作本地資源的權(quán)限,則執(zhí)行所述javascript引擎根據(jù)所述第一接口向主進程發(fā)送所述IPC消息的步驟。[0034]其中,在所述主進程中,根據(jù)收到的所述IPC消息調(diào)用本地接口在所述web頁面上操作所述本地的第一資源,包括:
[0035]在所述主進程中,對所述主進程收到的所述IPC消息進行過濾,確認所述IPC消息為所述主進程處理的消息后,根據(jù)所述IPC消息調(diào)用本地接口在所述web頁面上操作所述本地的第一資源。
[0036]再一方面,本發(fā)明還提供了一種在web頁面上實現(xiàn)本地操作的裝置,應用于一電子設備中,所述電子設備具有超文本標記語言HTML運行環(huán)境,所述裝置包括:
[0037]加載單元,用于在所述HTML運行環(huán)境中通過地址信息加載web頁面;
[0038]獲取單元,用于在加載所述web頁面的過程中,獲得用于表征所述電子設備的本地資源的情況的標識信息;
[0039]響應單元,用于獲得操作請求,所述操作請求用于表征操作所述本地資源的第一資源的請求;根據(jù)所述操作請求,以所述第一資源響應所述操作請求;
[0040]顯示單元,用于顯示所述第一資源響應所述操作請求的響應結(jié)果。
[0041]其中,所述響應單元包括:
[0042]javascript引擎,用于當在渲染進程中解析到所述操作請求對應的第一接口時,所述javascript弓丨擎用于解釋javascript腳本,所述第一接口為基于javascript自定義的接口,用于在web頁面上操作所述第一資源,且所述javascript引擎中注冊有所述第一接口,則根據(jù)所述第一接口向主進程發(fā)送進程間通信IPC消息,請求在所述web頁面上操作所述本地的第一資源;
[0043]本地調(diào)用子單元,用于在所述主進程中,根據(jù)收到的所述IPC消息調(diào)用本地接口在所述web頁面上操作所述本地的第一資源;
[0044]其中,所述渲染進程處于保護狀態(tài),不具有調(diào)用本地接口的權(quán)限,所述主進程處于非保護狀態(tài),具有調(diào)用本地接口的權(quán)限。
[0045]其中,所述javascript引擎用于:
[0046]將所述第一接口映射為所述渲染進程能夠運行的本地函數(shù);
[0047]運行所述本地函數(shù),向所述主進程發(fā)送所述IPC消息,請求在所述web頁面上操作所述本地的第一資源。
[0048]其中,所述javascript引擎還用于:
[0049]根據(jù)所述第一接口向主進程發(fā)送進程間通信IPC消息之前,根據(jù)預設的白名單判斷所述web頁面是否具有操作本地資源的權(quán)限;
[0050]如果確定所述web頁面具有操作本地資源的權(quán)限,則執(zhí)行所述javascript引擎根據(jù)所述第一接口向主進程發(fā)送所述IPC消息的步驟。
[0051]又一方面,本發(fā)明還提供了一種在web頁面上實現(xiàn)本地操作的裝置,應用于一電子設備中,所述電子設備具有超文本標記語言HTML運行環(huán)境,所述裝置包括:
[0052]javascript引擎,用于當在所述HTML運行環(huán)境中打開一個web頁面時,在渲染進程中對所述web頁面進行解析;當解析到第一接口時,所述第一接口為基于javascript自定義的接口,用于在web頁面上操作本地的第一資源,且所述javascript引擎中注冊有所述第一接口,則根據(jù)所述第一接口向主進程發(fā)送進程間通信IPC消息,請求在所述web頁面上操作所述本地的第一資源;[0053]本地調(diào)用模塊,用于在所述主進程中,根據(jù)收到的所述IPC消息調(diào)用本地接口在所述web頁面上操作所述本地的第一資源;
[0054]其中,所述渲染進程處于保護狀態(tài),不具有調(diào)用本地接口的權(quán)限,所述主進程處于非保護狀態(tài),具有調(diào)用本地接口的權(quán)限。
[0055]其中,所述javascript引擎用于:
[0056]將所述第一接口映射為所述渲染進程能夠運行的本地函數(shù);
[0057]運行所述本地函數(shù),向所述主進程發(fā)送所述IPC消息,請求在所述web頁面上操作所述本地的第一資源。
[0058]其中,所述javascript引擎還用于:
[0059]根據(jù)所述第一接口向主進程發(fā)送進程間通信IPC消息之前,根據(jù)預設的白名單判斷所述web頁面是否具有操作本地資源的權(quán)限;
[0060]如果確定所述web頁面具有操作本地資源的權(quán)限,則執(zhí)行根據(jù)所述第一接口向主進程發(fā)送所述IPC消息的步驟。
[0061]其中,所述本地調(diào)用模塊用于:
[0062]在所述主進程中,對所述主進程收到的所述IPC消息進行過濾,確認所述IPC消息為所述主進程處理的消息后,根據(jù)所述IPC消息調(diào)用本地接口在所述web頁面上操作所述本地的第一資源。
[0063]本發(fā)明提供的技術(shù)方案帶來的有益效果是:一方面,當在HTML運行環(huán)境中通過地址信息加載web頁面時,獲得用于表征該電子設備的本地資源的情況的標識信息,并獲得操作請求,該操作請求用于表征操作本地資源的第一資源的請求,以第一資源響應該操作請求,在顯示單元上顯示第一資源響應該操作請求的響應結(jié)果,實現(xiàn)了 web頁面上對本地的資源的訪問以及操作,提高了 javascript代碼的本地調(diào)用能力。另一方面,當在HTML運行環(huán)境中打開一個web頁面時,javascript引擎在渲染進程中解析到已注冊的第一接口后,向主進程發(fā)送IPC消息,請求在web頁面上操作本地的第一資源;在主進程中,根據(jù)該IPC消息調(diào)用本地接口在web頁面上操作本地的第一資源,使所述web頁面上對本地第一資源的操作得到了響應,提高了 javascript代碼的本地調(diào)用能力,與現(xiàn)有技術(shù)相比,能對web頁面開放本地調(diào)用的接口,增加了 web頁面的本地操作功能,所述javascript自定義接口不局限于讀文件或者寫文件操作,可以根據(jù)需要設計為執(zhí)行各種的本地操作,靈活方便,應用廣泛。
【專利附圖】
【附圖說明】
[0064]為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0065]圖1是本發(fā)明一實施例提供的在web頁面上實現(xiàn)本地操作的方法流程圖;
[0066]圖2是本發(fā)明又一實施例提供的在web頁面上實現(xiàn)本地操作的方法流程圖;
[0067]圖3是本發(fā)明另一實施例提供的在web頁面上實現(xiàn)本地操作的方法流程圖;
[0068]圖4是本發(fā)明實施例提供的通過進程間交互實現(xiàn)本地操作的示意圖;[0069]圖5是本發(fā)明一實施例提供的在web頁面上實現(xiàn)本地操作的裝置結(jié)構(gòu)圖;
[0070]圖6是本發(fā)明另實施例提供的在web頁面上實現(xiàn)本地操作的裝置結(jié)構(gòu)圖。
【具體實施方式】
[0071]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合附圖對本發(fā)明實施方式作進一步地詳細描述。
[0072]本發(fā)明實施例涉及HTML運行環(huán)境。所述HTML運行環(huán)境是指具有安全保護的多進程的運行環(huán)境。在HTML運行環(huán)境中,呈現(xiàn)引擎負責呈現(xiàn)HTML文檔和圖片,javascript弓丨擎負責解釋javascript腳本。所述呈現(xiàn)引擎如webkit, Gecko等等。所述多進程是指在HTML運行環(huán)境中會同時運行多個進程來執(zhí)行任務,該多進程包括但不限于渲染(render)進程、主(browser)進程等等。所述具有安全保護是指該HTML運行環(huán)境內(nèi)的render進程處于保護狀態(tài),不具有調(diào)用本地接口的權(quán)限。例如,置于沙箱(sandbox)之中,遵守最小許可權(quán)原貝U,每一個處理動作的權(quán)限都會被限制,并且僅能運算但無法寫入檔案或從敏感區(qū)域讀取檔案,如我的文件、桌面等,以此限制web頁面內(nèi)的Javascript代碼只能在沙箱中運行,惡意軟件將無法竊取信用卡號碼、干擾鼠標運作等,從而提高安全性。所述HTML運行環(huán)境可以為瀏覽器,所述瀏覽器包括但不限于Chrome瀏覽器等等。
[0073]參見圖1,本發(fā)明一實施例提供了 一種在web頁面上實現(xiàn)本地操作的方法,應用于一電子設備中,該電子設備包括一顯示單元,且該電子設備具有HTML運行環(huán)境,該方法包括:
[0074]101:在該HTML運行環(huán)境中通過地址信息加載web頁面。
[0075]102:在加載該web頁面的過程中,獲得用于表征該電子設備的本地資源的情況的標識信息。
[0076]103:獲得操作請求,所述操作請求用于表征操作本地資源的第一資源的請求。
[0077]104:根據(jù)該操作請求,以所述第一資源響應該操作請求。
[0078]105:在該顯示單元上顯示所述第一資源響應該操作請求的響應結(jié)果。
[0079]在上述方法的一個實施例中,具體地,步驟102可以包括:
[0080]在加載所述web頁面的過程中,當javascript引擎在渲染進程中解析到第二接口時,所述javascript引擎用于解釋javascript腳本,所述第二接口為基于javascript自定義的接口,用于獲得用于表征該電子設備的本地資源的情況的標識信息,且所述javascript引擎中注冊有所述第二接口,貝U所述javascript引擎根據(jù)所述第二接口向主進程發(fā)送進程間通信IPC消息,請求獲取所述標識信息;在所述主進程中,根據(jù)收到的所述IPC消息調(diào)用本地接口獲取所述標識信息。
[0081]相應地,上述方法中,可以在所述顯示單元上顯示所述web頁面對應的顯示界面,并且,在根據(jù)該操作請求以所述第一資源響應該操作請求后,在所述顯示界面內(nèi)顯示所述響應結(jié)果。
[0082]在上述方法的另一個實施例中,具體地,可以先在顯示單元上顯示所述web頁面對應的顯示界面,在該顯示界面內(nèi)顯示所述標識信息。其中,所述標識信息至少包括與第一資源對應的第一標識,進一步地還可以包括更多的標識,如與第二資源對應的第二標識,或者與第三資源對應的第三標識等等。所述操作請求可以通過檢測顯示界面上的標識是否被觸發(fā)來獲得,如當檢測到顯示界面上的第一標識被觸發(fā)時,獲得操作請求,該操作請求用于表征操作本地資源的第一資源的請求。當以第一資源響應該操作請求后,在所述顯示界面內(nèi)顯示所述響應結(jié)果。
[0083]本實施例中,根據(jù)所述操作請求,以所述第一資源響應所述操作請求,包括:
[0084]當javascript引擎在渲染進程中解析到所述操作請求對應的第一接口時,所述javascript引擎用于解釋javascript腳本,所述第一接口為基于javascript自定義的接口,用于在web頁面上操作所述第一資源,且所述javascript引擎中注冊有所述第一接口,則所述javascript引擎根據(jù)所述第一接口向主進程發(fā)送進程間通信IPC消息,請求在所述web頁面上操作所述本地的第一資源;
[0085]在所述主進程中,根據(jù)收到的所述IPC消息調(diào)用本地接口在所述web頁面上操作所述本地的第一資源;
[0086]其中,所述渲染進程處于保護狀態(tài),不具有調(diào)用本地接口的權(quán)限,所述主進程處于非保護狀態(tài),具有調(diào)用本地接口的權(quán)限。
[0087]進一步地,所述javascript引擎根據(jù)所述第一接口向主進程發(fā)送IPC消息,請求在所述web頁面上操作所述本地的第一資源,包括:
[0088]所述javascript引擎將所述第一接口映射為所述渲染進程能夠運行的本地函數(shù);
[0089]運行所述本地函數(shù),向所述主進程發(fā)送所述IPC消息,請求在所述web頁面上操作所述本地的第一資源。
[0090]本實施例中,所述方法還包括:
[0091]所述javascript引擎根據(jù)所述第一接口向主進程發(fā)送進程間通信IPC消息之前,根據(jù)預設的白名單判斷所述web頁面是否具有操作本地資源的權(quán)限;
[0092]如果確定所述web頁面具有操作本地資源的權(quán)限,則執(zhí)行所述javascript引擎根據(jù)所述第一接口向主進程發(fā)送所述IPC消息的步驟。
[0093]本實施例提供的上述方法,當在HTML運行環(huán)境中通過地址信息加載web頁面時,獲得用于表征該電子設備的本地資源的情況的標識信息,并獲得操作請求,該操作請求用于表征操作本地資源的第一資源的請求,以第一資源響應該操作請求,在顯示單元上顯示第一資源響應該操作請求的響應結(jié)果,實現(xiàn)了 web頁面上對本地的資源的訪問以及操作,提高了 javascript代碼的本地調(diào)用能力。
[0094]參見圖2,本發(fā)明又一實施例提供了一種在web頁面上實現(xiàn)本地操作的方法,應用于一電子設備中,該電子設備具有HTML運行環(huán)境,該方法包括:
[0095]201:當在所述HTML運行環(huán)境中打開一個web頁面時,javascript引擎在渲染進程中對所述web頁面進行解析。
[0096]202:當javascript引擎解析到第一接口時,該第一接口為基于javascript自定義的接口,用于在web頁面上操作本地的第一資源,且javascript引擎中注冊有該第一接口,則javascript引擎根據(jù)該第一接口向主進程發(fā)送IPC消息,請求在所述web頁面上操作本地的第一資源。
[0097]203:在所述主進程中,根據(jù)收到的IPC消息調(diào)用本地接口在所述web頁面上操作本地的第一資源。[0098]其中,所述渲染進程處于保護狀態(tài),不具有調(diào)用本地接口的權(quán)限,所述主進程處于非保護狀態(tài),具有調(diào)用本地接口的權(quán)限。
[0099]本實施例中,所述javascript引擎根據(jù)所述第一接口向主進程發(fā)送進程間通信IPC消息,請求在所述web頁面上操作所述本地的第一資源,包括:
[0100]所述javascript引擎將所述第一接口映射為所述渲染進程能夠運行的本地函數(shù);
[0101]運行所述本地函數(shù),向所述主進程發(fā)送所述IPC消息,請求在所述web頁面上操作所述本地的第一資源。
[0102]本實施例中,所述方法還包括:
[0103]所述javascript引擎根據(jù)所述第一接口向主進程發(fā)送進程間通信IPC消息之前,根據(jù)預設的白名單判斷所述web頁面是否具有操作本地資源的權(quán)限;
[0104]如果確定所述web頁面具有操作本地資源的權(quán)限,則執(zhí)行所述javascript引擎根據(jù)所述第一接口向主進程發(fā)送所述IPC消息的步驟。
[0105]本實施例中,根據(jù)收到的所述IPC消息調(diào)用本地接口在所述web頁面上操作所述本地的第一資源,包括:
[0106]在所述主進程中,對所述主進程收到的所述IPC消息進行過濾,確認所述IPC消息為所述主進程處理的消息后,根據(jù)所述IPC消息調(diào)用本地接口在所述web頁面上操作所述本地的第一資源。
[0107]本實施例提供的上述方法,當在HTML運行環(huán)境中打開一個web頁面時,javascript引擎在渲染進程中解析到已注冊的第一接口后,向主進程發(fā)送IPC消息,請求在web頁面上操作本地的第一資源;在主進程中,根據(jù)該IPC消息調(diào)用本地接口在web頁面上操作本地的第一資源,使所述web頁面上對本地第一資源的操作得到了響應,提高了javascript代碼的本地調(diào)用能力,與現(xiàn)有技術(shù)相比,能對web頁面開放本地調(diào)用的接口,增加了 web頁面的本地操作功能,所述javascript自定義接口不局限于讀文件或者寫文件操作,可以根據(jù)需要設計為執(zhí)行各種的本地操作,靈活方便,應用廣泛。
[0108]參見圖3,本發(fā)明另一實施例提供了一種在web頁面上實現(xiàn)本地操作的方法,應用于一電子設備中,該電子設備具有HTML運行環(huán)境,該方法具體包括:
[0109]301:預先在HTML運行環(huán)境中向javascript引擎注冊第一接口,其中,所述javascript弓丨擎用于解釋javascript腳本,該第一接口為基于javascript自定義的接口,用于在web頁面上操作本地的第一資源。
[0110]其中,第一接口為預先設計的,其功能為在web頁面上操作本地的第一資源。該web頁面是指該HTML運行環(huán)境處理的頁面,如當前顯示的html頁面。所述本地的第一資源是指本地客戶端上保存的文件、可執(zhí)行程序等等。所述操作本地的第一資源,包括但不限于:讀取該客戶端內(nèi)的文件、在該客戶端內(nèi)寫文件,執(zhí)行一個可執(zhí)行程序、啟用該客戶端內(nèi)的一項服務、或者禁用該客戶端內(nèi)的一項服務等等。
[0111]302:當在HTML運行環(huán)境中打開一個web頁面時,javascript引擎在渲染進程中對該web頁面進行解析。
[0112]本實施例中的HTML運行環(huán)境為多進程運行環(huán)境,所述多進程包括但不限于:渲染進程、主(browser)進程等等。其中,javascript引擎運行在渲染進程中,例如,Chrome瀏覽器的javascript引擎V8運行在render進程中。javascript引擎主要用于對web頁面內(nèi)的javascript腳本進行解析。
[0113]303:當javascript引擎解析到所述已注冊的第一接口時,javascript引擎根據(jù)預設的白名單判斷該web頁面是否具有操作本地資源的權(quán)限。
[0114]本實施例中,所述白名單為預先設置的列表,其中記錄有具有操作本地資源的權(quán)限的web頁面的來源信息。具體地,可以判斷該白名單中是否記錄有該web頁面的來源信息,如果是,則確定該web頁面具有操作本地資源的權(quán)限,否則,確定該web頁面沒有操作本地資源的權(quán)限。通過白名單可以嚴格地控制web頁面操作本地資源的權(quán)限,從而增強了安全性。
[0115]304:如果確定該web頁面具有操作本地資源的權(quán)限,則將第一接口映射為渲染進程能夠運行的本地函數(shù)。
[0116]通常,渲染進程中可以運行本地函數(shù)庫中的各種本地函數(shù),這些函數(shù)通常為C++函數(shù),可以執(zhí)行各種功能。上述第一接口需要映射為對應的本地函數(shù),才能在渲染進程中運行。
[0117]305:運行該本地函數(shù),向主進程發(fā)送IPC消息,請求在web頁面上操作本地的第一資源。
[0118]本實施例中,由于渲染進程位于沙箱之中,處于保護狀態(tài),無法調(diào)用本地的各種接口以操作本地資源,因此,渲染進程將操作本地資源的請求發(fā)送給主進程,以請求主進程操作本地資源。
[0119]所述IPC消息主要用于進程之間的通信,消息的類型也有很多種,本步驟使用IPC消息用于向主進程發(fā)送操作本地資源的請求,具體的IPC消息的格式則不做過多說明。
[0120]306:在該主進程中,對主進程收到的IPC消息進行過濾,在過濾確認收到的該IPC消息為主進程處理的消息后,根據(jù)該IPC消息調(diào)用本地接口在所述web頁面上操作本地的
第一資源。
[0121]通常,主進程會收到很多消息,各種各樣的消息,來自于不同的進程,有些消息屬于主進程處理的消息,有些消息如廣播消息不是主進程處理的消息,因此,為了提高處理效率,主進程可以對收到的消息進行過濾,從而選出屬于自己處理的消息。
[0122]其中,主進程處于非保護狀態(tài),具有調(diào)用本地接口的權(quán)限。因此,可以在主進程中,對本地的API (Application Programming Interface,應用程序接口)進行調(diào)用,從而實現(xiàn)操作本地資源。主進程在操作本地的第一資源后,將執(zhí)行的結(jié)果返回給渲染進程。
[0123]為了更好地說明上述方法的執(zhí)行過程,參見圖4,為本實施例提供的通過進程間交互實現(xiàn)本地操作的示意圖。其中,以HTML運行環(huán)境為chiOmium瀏覽器為例進行說明,瀏覽器正在運行的web頁面上包含了一個javascript自定義接口,用于打開瀏覽器所在客戶端本地的一個exe文件。實現(xiàn)執(zhí)行本地操作的流程如下:①javascript引擎V8在渲染render進程中對web頁面上的javascript代碼進行解析,解析到一個javascript自定義接口 meplus.platform.1auchExe O ;②將該 javascript 自定義接口 映射為 render 進程能夠執(zhí)行的本地函數(shù);③運行該本地函數(shù);④發(fā)送IPC消息給browser進程,請求執(zhí)行本地操作toowser進程對收到的消息進行過濾,確認該IPC消息為自己處理的消息,調(diào)用browser進程能夠執(zhí)行的函數(shù)OnLaunchNativeExe O ,該函數(shù)調(diào)用windows系統(tǒng)提供的API實現(xiàn)打開本地的exe文件的操作。
[0124]本實施例提供的上述方法,當在HTML運行環(huán)境中打開一個web頁面時,javascript引擎在渲染進程中解析到已注冊的第一接口后,向主進程發(fā)送IPC消息,請求在web頁面上操作本地的第一資源;在主進程中,根據(jù)該IPC消息調(diào)用本地接口在web頁面上操作本地的第一資源,使所述web頁面上對本地第一資源的操作得到了響應,提高了javascript代碼的本地調(diào)用能力,與現(xiàn)有技術(shù)相比,能對web頁面開放本地調(diào)用的接口,增加了 web頁面的本地操作功能,所述javascript自定義接口不局限于讀文件或者寫文件操作,可以根據(jù)需要設計為執(zhí)行各種的本地操作,靈活方便,應用廣泛。
[0125]參見圖5,本發(fā)明再一實施例提供了一種在web頁面上實現(xiàn)本地操作的裝置,應用于一電子設備中,該電子設備具有超文本標記語言HTML運行環(huán)境,所述裝置包括:
[0126]加載單元501,用于在所述HTML運行環(huán)境中通過地址信息加載web頁面;
[0127]獲取單元502,用于在加載所述web頁面的過程中,獲得用于表征所述電子設備的本地資源的情況的標識信息;
[0128]響應單元503,用于獲得操作請求,所述操作請求用于表征操作所述本地資源的第一資源的請求;根據(jù)所述操作請求,以所述第一資源響應所述操作請求;
[0129]顯示單元504,用于顯示所述第一資源響應所述操作請求的響應結(jié)果。
[0130]其中,響應單元503包括:
[0131]javascript引擎,用于當在渲染進程中解析到所述操作請求對應的第一接口時,所述javascript弓丨擎用于解釋javascript腳本,所述第一接口為基于javascript自定義的接口,用于在web頁面上操作所述第一資源,且所述javascript引擎中注冊有所述第一接口,則根據(jù)所述第一接口向主進程發(fā)送進程間通信IPC消息,請求在所述web頁面上操作所述本地的第一資源;
[0132]本地調(diào)用子單元,用于在所述主進程中,根據(jù)收到的所述IPC消息調(diào)用本地接口在所述web頁面上操作所述本地的第一資源;
[0133]其中,所述渲染進程處于保護狀態(tài),不具有調(diào)用本地接口的權(quán)限,所述主進程處于非保護狀態(tài),具有調(diào)用本地接口的權(quán)限。
[0134]進一步地,所述javascript引擎用于:
[0135]將所述第一接口映射為所述渲染進程能夠運行的本地函數(shù);
[0136]運行所述本地函數(shù),向所述主進程發(fā)送所述IPC消息,請求在所述web頁面上操作所述本地的第一資源。
[0137]本實施例中,所述javascript引擎還用于:
[0138]根據(jù)所述第一接口向主進程發(fā)送進程間通信IPC消息之前,根據(jù)預設的白名單判斷所述web頁面是否具有操作本地資源的權(quán)限;
[0139]如果確定所述web頁面具有操作本地資源的權(quán)限,則執(zhí)行所述javascript引擎根據(jù)所述第一接口向主進程發(fā)送所述IPC消息的步驟。
[0140]本實施例提供的上述裝置可以執(zhí)行上述任一方法實施例中提供的方法,詳細過程見方法實施例中的描述,此處不贅述。
[0141]本實施例提供的上述裝置,當在HTML運行環(huán)境中通過地址信息加載web頁面時,獲得用于表征該電子設備的本地資源的情況的標識信息,并獲得操作請求,該操作請求用于表征操作本地資源的第一資源的請求,以第一資源響應該操作請求,在顯示單元上顯示第一資源響應該操作請求的響應結(jié)果,實現(xiàn)了 web頁面上對本地的資源的訪問以及操作,提高了 javascript代碼的本地調(diào)用能力。
[0142]參見圖6,本發(fā)明另一實施例提供了 一種在web頁面上實現(xiàn)本地操作的裝置,應用于一電子設備中,該電子設備具有超文本標記語言HTML運行環(huán)境,所述裝置包括:
[0143]javascript引擎601,用于當在所述HTML運行環(huán)境中打開一個web頁面時,在渲染進程中對所述web頁面進行解析;當解析到第一接口時,所述第一接口為基于javascript自定義的接口,用于在web頁面上操作本地的第一資源,且所述javascript引擎中注冊有所述第一接口,則根據(jù)所述第一接口向主進程發(fā)送進程間通信IPC消息,請求在所述web頁面上操作所述本地的第一資源;
[0144]本地調(diào)用模塊602,用于在所述主進程中,根據(jù)收到的所述IPC消息調(diào)用本地接口在所述web頁面上操作所述本地的第一資源;
[0145]其中,所述渲染進程處于保護狀態(tài),不具有調(diào)用本地接口的權(quán)限,所述主進程處于非保護狀態(tài),具有調(diào)用本地接口的權(quán)限。
[0146]其中,所述javascript引擎用于:
[0147]將所述第一接口映射為所述渲染進程能夠運行的本地函數(shù);
[0148]運行所述本地函數(shù),向所述主進程發(fā)送所述IPC消息,請求在所述web頁面上操作所述本地的第一資源。
[0149]進一步地,所述javascript引擎還用于:
[0150]根據(jù)所述第一接口向主進程發(fā)送進程間通信IPC消息之前,根據(jù)預設的白名單判斷所述web頁面是否具有操作本地資源的權(quán)限;
[0151]如果確定所述web頁面具有操作本地資源的權(quán)限,則執(zhí)行根據(jù)所述第一接口向主進程發(fā)送所述IPC消息的步驟。
[0152]本實施例中,所述本地調(diào)用模塊用于:
[0153]在所述主進程中,對所述主進程收到的所述IPC消息進行過濾,確認所述IPC消息為所述主進程處理的消息后,根據(jù)所述IPC消息調(diào)用本地接口在所述web頁面上操作所述本地的第一資源。
[0154]本實施例提供的上述裝置可以執(zhí)行上述任一方法實施例中提供的方法,詳細過程見方法實施例中的描述,此處不贅述。
[0155]本實施例提供的上述裝置,當在HTML運行環(huán)境中打開一個web頁面時,javascript引擎在渲染進程中解析到已注冊的第一接口后,向主進程發(fā)送IPC消息,請求在web頁面上操作本地的第一資源;在主進程中,根據(jù)該IPC消息調(diào)用本地接口在web頁面上操作本地的第一資源,使所述web頁面上對本地第一資源的操作得到了響應,提高了javascript代碼的本地調(diào)用能力,與現(xiàn)有技術(shù)相比,能對web頁面開放本地調(diào)用的接口,增加了 web頁面的本地操作功能,所述javascript自定義接口不局限于讀文件或者寫文件操作,可以根據(jù)需要設計為執(zhí)行各種的本地操作,靈活方便,應用廣泛。
[0156]本領域普通技術(shù)人員可以理解實現(xiàn)上述實施例的全部或部分步驟可以通過硬件來完成,也可以通過程序來指令相關(guān)的硬件完成,所述的程序可以存儲于一種計算機可讀存儲介質(zhì)中,上述提到的存儲介質(zhì)可以是只讀存儲器,磁盤或光盤等。[0157]以上所述僅為本發(fā)明的較佳實施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內(nèi)。
【權(quán)利要求】
1.一種在web頁面上實現(xiàn)本地操作的方法,其特征在于,所述方法應用于一電子設備中,所述電子設備包括一顯示單元以及所述電子設備具有超文本標記語言HTML運行環(huán)境,所述方法包括: 在所述HTML運行環(huán)境中通過地址信息加載web頁面; 在加載所述web頁面的過程中,獲得用于表征所述電子設備的本地資源的情況的標識信息; 獲得操作請求,所述操作請求用于表征操作所述本地資源的第一資源的請求; 根據(jù)所述操作請求,以所述第一資源響應所述操作請求; 在所述顯示單元上顯示所述第一資源響應所述操作請求的響應結(jié)果。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,根據(jù)所述操作請求,以所述第一資源響應所述操作請求,包括: 當javascript引擎在渲染進程中解析到所述操作請求對應的第一接口時,所述javascript引擎用于解釋javascript腳本,所述第一接口為基于javascript自定義的接口,用于在web頁面上操作所述第一資源,且所述javascript引擎中注冊有所述第一接口,則所述javascript引擎根據(jù)所述第一接口向主進程發(fā)送進程間通信IPC消息,請求在所述web頁面上操作所述本地的第一資源; 在所述主進程中,根據(jù)收到的所述IPC消息調(diào)用本地接口在所述web頁面上操作所述本地的第一資源; 其中,所述渲染進程處于保護狀態(tài),不具有調(diào)用本地接口的權(quán)限,所述主進程處于非保護狀態(tài),具有調(diào)用本地接口的權(quán)限。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述javascript引擎根據(jù)所述第一接口向主進程發(fā)送IPC消息,請求在所述web頁面上操作所述本地的第一資源,包括: 所述javascript引擎將所述第一接口映射為所述渲染進程能夠運行的本地函數(shù);運行所述本地函數(shù),向所述主進程發(fā)送所述IPC消息,請求在所述web頁面上操作所述本地的第一資源。
4.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述方法還包括: 所述javascript引擎根據(jù)所述第一接口向主進程發(fā)送進程間通信IPC消息之前,根據(jù)預設的白名單判斷所述web頁面是否具有操作本地資源的權(quán)限; 如果確定所述web頁面具有操作本地資源的權(quán)限,則執(zhí)行所述javascript引擎根據(jù)所述第一接口向主進程發(fā)送所述IPC消息的步驟。
5.一種在web頁面上實現(xiàn)本地操作的方法,其特征在于,所述方法應用于一電子設備中,所述電子設備具有超文本標記語言HTML運行環(huán)境,所述方法包括: 當在所述HTML運行環(huán)境中打開一個web頁面時,javascript引擎在渲染進程中對所述web頁面進行解析; 當所述javascript引擎解析到第一接口時,所述第一接口為基于javascript自定義的接口,用于在web頁面上操作本地的第一資源,且所述javascript引擎中注冊有所述第一接口,則所述javascript引擎根據(jù)所述第一接口向主進程發(fā)送進程間通信IPC消息,請求在所述web頁面上操作所述本地的第一資源; 在所述主進程中,根據(jù)收到的所述IPC消息調(diào)用本地接口在所述web頁面上操作所述本地的第一資源; 其中,所述渲染進程處于保護狀態(tài),不具有調(diào)用本地接口的權(quán)限,所述主進程處于非保護狀態(tài),具有調(diào)用本地接口的權(quán)限。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述javascript引擎根據(jù)所述第一接口向主進程發(fā)送進程間通信IPC消息,請求在所述web頁面上操作所述本地的第一資源,包括: 所述javascript引擎將所述第一接口映射為所述渲染進程能夠運行的本地函數(shù);運行所述本地函數(shù),向所述主進程發(fā)送所述IPC消息,請求在所述web頁面上操作所述本地的第一資源。
7.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述方法還包括: 所述javascript引擎根據(jù)所述第一接口向主進程發(fā)送進程間通信IPC消息之前,根據(jù)預設的白名單判斷所述web頁面是否具有操作本地資源的權(quán)限; 如果確定所述web頁面具有操作本地資源的權(quán)限,則執(zhí)行所述javascript引擎根據(jù)所述第一接口向主進程發(fā)送 所述IPC消息的步驟。
8.根據(jù)權(quán)利要求5所述的方法,其特征在于,在所述主進程中,根據(jù)收到的所述IPC消息調(diào)用本地接口在所述web頁面上操作所述本地的第一資源,包括: 在所述主進程中,對所述主進程收到的所述IPC消息進行過濾,確認所述IPC消息為所述主進程處理的消息后,根據(jù)所述IPC消息調(diào)用本地接口在所述web頁面上操作所述本地的第一資源。
9.一種在web頁面上實現(xiàn)本地操作的裝置,其特征在于,應用于一電子設備中,所述電子設備具有超文本標記語言HTML運行環(huán)境,所述裝置包括: 加載單元,用于在所述HTML運行環(huán)境中通過地址信息加載web頁面; 獲取單元,用于在加載所述web頁面的過程中,獲得用于表征所述電子設備的本地資源的情況的標識信息; 響應單元,用于獲得操作請求,所述操作請求用于表征操作所述本地資源的第一資源的請求;根據(jù)所述操作請求,以所述第一資源響應所述操作請求; 顯示單元,用于顯示所述第一資源響應所述操作請求的響應結(jié)果。
10.根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述響應單元包括: javascript引擎,用于當在渲染進程中解析到所述操作請求對應的第一接口時,所述javascript引擎用于解釋javascript腳本,所述第一接口為基于javascript自定義的接口,用于在web頁面上操作所述第一資源,且所述javascript引擎中注冊有所述第一接口,則根據(jù)所述第一接口向主進程發(fā)送進程間通信IPC消息,請求在所述web頁面上操作所述本地的第一資源; 本地調(diào)用子單元,用于在所述主進程中,根據(jù)收到的所述IPC消息調(diào)用本地接口在所述web頁面上操作所述本地的第一資源; 其中,所述渲染進程處于保護狀態(tài),不具有調(diào)用本地接口的權(quán)限,所述主進程處于非保護狀態(tài),具有調(diào)用本地接口的權(quán)限。
11.根據(jù)權(quán)利要求10所述的裝置,其特征在于,所述javascript引擎用于: 將所述第一接口映射為所述渲染進程能夠運行的本地函數(shù);運行所述本地函數(shù),向所述主進程發(fā)送所述IPC消息,請求在所述web頁面上操作所述本地的第一資源。
12.根據(jù)權(quán)利要求10所述的裝置,其特征在于,所述javascript引擎還用于: 根據(jù)所述第一接口向主進程發(fā)送進程間通信IPC消息之前,根據(jù)預設的白名單判斷所述web頁面是否具有操作本地資源的權(quán)限; 如果確定所述web頁面具有操作本地資源的權(quán)限,則執(zhí)行所述javascript引擎根據(jù)所述第一接口向主進程發(fā)送所述IPC消息的步驟。
13.—種在web頁面上實現(xiàn)本地操作的裝置,其特征在于,應用于一電子設備中,所述電子設備具有超文本標記語言HTML運行環(huán)境,所述裝置包括: javascript引擎,用于當在所述HTML運行環(huán)境中打開一個web頁面時,在渲染進程中對所述web頁面進行解析;當解析到第一接口時,所述第一接口為基于javascript自定義的接口,用于在web頁面上操作本地的第一資源,且所述javascript引擎中注冊有所述第一接口,則根據(jù)所述第一接口向主進程發(fā)送進程間通信IPC消息,請求在所述web頁面上操作所述本地的第一資源; 本地調(diào)用模塊,用于在所述主進程中,根據(jù)收到的所述IPC消息調(diào)用本地接口在所述web頁面上操作所述本地的第一資源; 其中,所述渲染進程處于保護狀態(tài),不具有調(diào)用本地接口的權(quán)限,所述主進程處于非保護狀態(tài),具有調(diào)用本地接口的權(quán)限。
14.根據(jù)權(quán)利要求13所述的裝置,其特征在于,所述javascript引擎用于: 將所述第一接口映射為所述渲染進程能夠運行的本地函數(shù); 運行所述本地函數(shù),向所述主進程發(fā)送所述IPC消息,請求在所述web頁面上操作所述本地的第一資源。
15.根據(jù)權(quán)利要求13所述的裝置,其特征在于,所述javascript引擎還用于: 根據(jù)所述第一接口向主進程發(fā)送進程間通信IPC消息之前,根據(jù)預設的白名單判斷所述web頁面是否具有操作本地資源的權(quán)限; 如果確定所述web頁面具有操作本地資源的權(quán)限,則執(zhí)行根據(jù)所述第一接口向主進程發(fā)送所述IPC消息的步驟。
16.根據(jù)權(quán)利要求13所述的裝置,其特征在于,所述本地調(diào)用模塊用于: 在所述主進程中,對所述主進程收到的所述IPC消息進行過濾,確認所述IPC消息為所述主進程處理的消息后,根據(jù)所述IPC消息調(diào)用本地接口在所述web頁面上操作所述本地的第一資源。
【文檔編號】G06F9/44GK103927151SQ201310011380
【公開日】2014年7月16日 申請日期:2013年1月11日 優(yōu)先權(quán)日:2013年1月11日
【發(fā)明者】莫洪靈, 李京, 徐晶, 馮榮峰 申請人:聯(lián)想(北京)有限公司