專(zhuān)利名稱(chēng):使用共享工作器的子組件實(shí)例和同步的制作方法
技術(shù)領(lǐng)域:
本公開(kāi)涉及網(wǎng)絡(luò)通信。更具體地,本公開(kāi)涉及被配置成在耦接到網(wǎng)絡(luò)的通信設(shè)備上的web瀏覽器中運(yùn)作的web應(yīng)用。
背景技術(shù):
Web瀏覽器一般是在計(jì)算設(shè)備(例如,個(gè)人計(jì)算機(jī)、膝上型機(jī)、個(gè)人數(shù)字助理(PDA)、蜂窩電話、智能手機(jī)等)上運(yùn)作來(lái)使通過(guò)網(wǎng)絡(luò)(例如,因特網(wǎng))可獲得的信息能夠被訪問(wèn)的應(yīng)用(例如,計(jì)算機(jī)程序)。Web瀏覽器可以被配置成通過(guò)利用指示根據(jù)其可以訪問(wèn)信息的位置的統(tǒng)一資源標(biāo)識(shí)符(URI)來(lái)訪問(wèn)在網(wǎng)絡(luò)上可獲得的信息。典型的web瀏覽器可以被配置成在一個(gè)或多個(gè)瀏覽器窗口或在瀏覽器內(nèi)的瀏覽器標(biāo)簽中向用戶展現(xiàn)網(wǎng)絡(luò)可訪問(wèn)和/或其他信息。Web瀏覽器可以使用戶能夠同時(shí)打開(kāi)多個(gè)web瀏覽器窗口或在web瀏覽器窗口內(nèi)的標(biāo)簽。Web應(yīng)用一般是通過(guò)如上所述的web瀏覽器可訪問(wèn)的軟件應(yīng)用。例如,web應(yīng)用可以是文檔,諸如超文本標(biāo)記語(yǔ)言(HTML)文檔。文檔web應(yīng)用可以被配置成向用戶在視覺(jué)上展現(xiàn)在網(wǎng)絡(luò)上可獲得的信息。文檔web應(yīng)用可以向用戶展現(xiàn)到可獲得的信息(例如,到URI)的一個(gè)或多個(gè)鏈接??梢韵蛴脩籼峁┻x擇一個(gè)或多個(gè)鏈接的能力,其可以導(dǎo)致新的web文檔的展現(xiàn),包括通過(guò)與鏈接相關(guān)聯(lián)的URI可訪問(wèn)的信息。對(duì)web文檔的一個(gè)或多個(gè)鏈接的用戶選擇可以替代或另外執(zhí)行一個(gè)或多個(gè)非文檔web應(yīng)用來(lái)在瀏覽器內(nèi)執(zhí)行期望功能。一些web應(yīng)用可以被配置成對(duì)一個(gè)或多個(gè)子組件進(jìn)行操作。Web應(yīng)用所操作的子組件可以為web應(yīng)用執(zhí)行期望任務(wù)。子組件可以向用戶展現(xiàn)某一形式的視覺(jué)描繪,例如即時(shí)消息(例如,聊天)窗口、聯(lián)系人采集器、日歷事件輸入/更新窗口、照片上載和/或展現(xiàn)子窗口、音頻/視頻展現(xiàn)/播放器窗口、或主要或主機(jī)web應(yīng)用的任何其他形式的彈出或嵌入式子窗口。在其他示例中,主要或主機(jī)web應(yīng)用可以對(duì)被配置成為web應(yīng)用執(zhí)行非視覺(jué)功能的一個(gè)或多個(gè)子組件進(jìn)行操作。
發(fā)明內(nèi)容
本公開(kāi)針對(duì)用于使用共享工作器應(yīng)用來(lái)為至少一個(gè)主機(jī)web應(yīng)用創(chuàng)建一個(gè)或多個(gè)子組件實(shí)例或視覺(jué)用戶接口(UI)元件的技術(shù)。本公開(kāi)進(jìn)一步針對(duì)用于使用共享工作器應(yīng)用來(lái)使得能夠(例如,在沒(méi)有訪問(wèn)網(wǎng)絡(luò)的情況下)進(jìn)行對(duì)共享工作器和子組件實(shí)例正在其上運(yùn)作的計(jì)算機(jī)設(shè)備是本地的對(duì)一個(gè)或多個(gè)子組件實(shí)例(Π元件)的狀態(tài)的更新的技術(shù)。本公開(kāi)的技術(shù)可以提供在創(chuàng)建子組件實(shí)例和/或更新子組件實(shí)例狀態(tài)方面的改進(jìn),因?yàn)橥ㄟ^(guò)使用共享工作器,可以使訪問(wèn)網(wǎng)絡(luò)以獲得定義子組件(Π元件)的軟件和/或傳送子組件實(shí)例狀態(tài)更新的需求最小化。進(jìn)一步,定義子組件(Π元件)的軟件可以不依賴(lài)于定義主機(jī)web應(yīng)用的軟件,其可以提供在為主機(jī)web應(yīng)用和子組件中的一個(gè)或多個(gè)管理軟件發(fā)布周期方面的改進(jìn)。在一個(gè)示例中,在此描述了用于向視覺(jué)用戶接口元件提供更新的方法。該方法包括通過(guò)在計(jì)算設(shè)備上執(zhí)行的瀏覽器執(zhí)行被配置成向計(jì)算設(shè)備所渲染的用戶接口(UI)元件提供更新的共享工作器應(yīng)用。該方法進(jìn)一步包括通過(guò)瀏覽器執(zhí)行被配置成展現(xiàn)第一 Π元件的視覺(jué)渲染的第一 Web應(yīng)用。該方法進(jìn)一步包括通過(guò)瀏覽器執(zhí)行被配置成展現(xiàn)第二 UI元件的視覺(jué)渲染的第二 web應(yīng)用,其中第二 Π元件基本上類(lèi)似于第一 Π元件。該方法進(jìn)一步包括通過(guò)共享工作器應(yīng)用并且從第一 Π元件接收對(duì)第一 Π元件的狀態(tài)更新,其中該狀態(tài)更新包括對(duì)待由第一 Π元件提供的視覺(jué)內(nèi)容的更新。該方法進(jìn)一步包括通過(guò)共享工作器應(yīng)用對(duì)第一 Π元件和第二 Π元件的視覺(jué)渲染進(jìn)行更新以反映所接收的狀態(tài)更新。在此還描述了包括存儲(chǔ)指令的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的制品。所述指令促使計(jì)算設(shè)備通過(guò)在計(jì)算設(shè)備上執(zhí)行的瀏覽器執(zhí)行被配置成向計(jì)算設(shè)備所渲染的用戶接口(UI)元件提供更新的共享工作器應(yīng)用。所述指令進(jìn)一步促使計(jì)算設(shè)備通過(guò)瀏覽器執(zhí)行被配置成展現(xiàn)第一 UI元件的視覺(jué)渲染的第一 web應(yīng)用。所述指令進(jìn)一步促使計(jì)算設(shè)備通過(guò)瀏覽器執(zhí)行被配置成展現(xiàn)第二 Π元件的視覺(jué)渲染的第二 web應(yīng)用,其中第二 Π元件基本上類(lèi)似于第-UI元件。通過(guò)共享工作器應(yīng)用并且從第一 Π元件接收對(duì)第一 Π元件的狀態(tài)更新,其中該狀態(tài)更新包括對(duì)待由第一 Π元件提供的視覺(jué)內(nèi)容的更新。所述指令進(jìn)一步促使計(jì)算設(shè)備通過(guò)共享工作器應(yīng)用對(duì)第一Π元件和第二Π元件的視覺(jué)渲染進(jìn)行更新以反映所接收的狀態(tài)更新。在此還描述了設(shè)備。該設(shè)備包括瀏覽器,其被配置成執(zhí)行被配置成向計(jì)算設(shè)備所渲染的用戶接口(UI)元件提供更新的共享工作器應(yīng)用,以及其中瀏覽器被進(jìn)一步配置成執(zhí)行被配置成展現(xiàn)第一 UI元件的視覺(jué)渲染的第一 web應(yīng)用和被配置成展現(xiàn)第二 UI元件的視覺(jué)渲染的第二 web應(yīng)用。該設(shè)備進(jìn)一步包括用于從第一 Π元件并且通過(guò)共享工作器應(yīng)用接收對(duì)第一 UI元件的狀態(tài)更新的裝置,其中該狀態(tài)更新包括對(duì)待由第一 UI元件提供的視覺(jué)內(nèi)容的更新。該設(shè)備進(jìn)一步包括用于通過(guò)共享工作器應(yīng)用對(duì)第一 Π元件和第二 Π元件的視覺(jué)渲染進(jìn)行更新以反映所接收的狀態(tài)更新的裝置。在此進(jìn)一步描述了用于通過(guò)web應(yīng)用展現(xiàn)視覺(jué)用戶接口元件的方法。該方法包括通過(guò)在計(jì)算設(shè)備上執(zhí)行的瀏覽器執(zhí)行主機(jī)web應(yīng)用。該方法進(jìn)一步包括通過(guò)該瀏覽器執(zhí)行被配置成向在計(jì)算設(shè)備上執(zhí)行的至少一個(gè)主機(jī)web應(yīng)用提供至少一個(gè)用戶接口(UI)元件的共享工作器。該方法進(jìn)一步包括從主機(jī)web應(yīng)用并且通過(guò)共享工作器接收對(duì)創(chuàng)建展現(xiàn)與該主機(jī)web應(yīng)用相關(guān)聯(lián)的UI元件的功能的視覺(jué)描繪的用戶接口(UI)元件的視覺(jué)渲染的請(qǐng)求。該方法進(jìn)一步包括通過(guò)共享工作器獲得可執(zhí)行來(lái)展現(xiàn)Π元件的視覺(jué)渲染的軟件。該方法進(jìn)一步包括通過(guò)共享工作器將所獲得的軟件存儲(chǔ)在計(jì)算設(shè)備的存儲(chǔ)器中。該方法進(jìn)一步包括響應(yīng)于該請(qǐng)求而執(zhí)行所獲得的軟件來(lái)創(chuàng)建與主機(jī)web應(yīng)用協(xié)同展現(xiàn)的UI元件的視覺(jué)渲染。在此還描述了包括存儲(chǔ)指令的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的制品。所述指令促使計(jì)算設(shè)備通過(guò)在計(jì)算設(shè)備上執(zhí)行的瀏覽器執(zhí)行主機(jī)Web應(yīng)用。所述指令進(jìn)一步促使計(jì)算設(shè)備通過(guò)瀏覽器執(zhí)行被配置成向在計(jì)算設(shè)備上執(zhí)行的至少一個(gè)主機(jī)web應(yīng)用提供至少一個(gè)用戶接口(UI)元件的共享工作器。所述指令進(jìn)一步促使計(jì)算設(shè)備從主機(jī)web應(yīng)用并且通過(guò)共享工作器接收對(duì)創(chuàng)建展現(xiàn)與該主機(jī)web應(yīng)用相關(guān)聯(lián)的UI元件的功能的視覺(jué)描繪的用戶接口(UI)元件的視覺(jué)渲染的請(qǐng)求。所述指令進(jìn)一步促使計(jì)算設(shè)備通過(guò)共享工作器獲得可執(zhí)行來(lái)展現(xiàn)Π元件的視覺(jué)渲染的軟件。所述指令進(jìn)一步促使計(jì)算設(shè)備通過(guò)共享工作器將所獲得的軟件存儲(chǔ)在計(jì)算設(shè)備的存儲(chǔ)器中。所述指令進(jìn)一步促使計(jì)算設(shè)備響應(yīng)于該請(qǐng)求而執(zhí)行所獲得的軟件來(lái)創(chuàng)建與主機(jī)web應(yīng)用協(xié)同展現(xiàn)的UI元件的視覺(jué)渲染。在附圖和下面描述中闡述了本公開(kāi)的一個(gè)或多個(gè)實(shí)施例的細(xì)節(jié)。本公開(kāi)的其他特征、目的和優(yōu)勢(shì)從描述和附圖以及從權(quán)利要求將是顯而易見(jiàn)的。
圖1A是圖示與本公開(kāi)的技術(shù)一致的計(jì)算設(shè)備和在該計(jì)算設(shè)備上執(zhí)行的包括共享工作器應(yīng)用的瀏覽器的一個(gè)示例的概念圖。圖1B是圖示與本公開(kāi)的技術(shù)一致的主機(jī)web應(yīng)用和該主機(jī)web應(yīng)用的子組件實(shí)例的一個(gè)示例的概念圖。圖2是圖示與本公開(kāi)的技術(shù)一致的計(jì)算設(shè)備和在該計(jì)算設(shè)備上執(zhí)行的包括共享工作器應(yīng)用以及第一和第二用戶接口元件(UI)的瀏覽器的一個(gè)示例的概念圖。圖3是圖示與本公開(kāi)的技術(shù)一致的被配置成運(yùn)作合并有共享工作器應(yīng)用的web瀏覽器的計(jì)算硬件的各種示例的概念圖。圖4是圖示與本公開(kāi)的技術(shù)一致的運(yùn)作使得能夠?qū)嵗咏M件和/或同步子組件狀態(tài)的共享工作器應(yīng)用的瀏覽器的一個(gè)示例的框圖。圖5是圖示與本公開(kāi)的技術(shù)一致的可操作來(lái)同步子組件實(shí)例的狀態(tài)的共享工作器應(yīng)用的一個(gè)示例的概念圖。圖6是圖示與本公開(kāi)的技術(shù)一致的可操作來(lái)使得能夠?qū)ψ咏M件進(jìn)行同步和/或?qū)嵗墓蚕砉ぷ髌鲬?yīng)用的組件的一個(gè)示例的框圖。圖7是圖示與本公開(kāi)的技術(shù)一致的通過(guò)共享工作器應(yīng)用來(lái)創(chuàng)建子組件實(shí)例的方法的一個(gè)示例的流程圖。圖8是圖示與本公開(kāi)的技術(shù)一致的更新子組件狀態(tài)的方法的一個(gè)示例的流程圖。圖9是圖示與本公開(kāi)的技術(shù)一致的可操作來(lái)跨域?qū)嵗粋€(gè)或多個(gè)子組件和/或更新一個(gè)或多個(gè)子組件實(shí)例的狀態(tài)的共享工作器的一個(gè)示例的框圖。圖10是圖示與本公開(kāi)的技術(shù)一致的更新用戶接口(UI)元件狀態(tài)的方法的一個(gè)示例的流程圖。圖11是圖示與本公開(kāi)的技術(shù)一致的向主機(jī)web應(yīng)用提供接口(UI)元件的方法的一個(gè)示例的流程圖。
具體實(shí)施例方式圖1A是圖示與本公開(kāi)一致的包括合并有共享工作器應(yīng)用14的瀏覽器12的計(jì)算系統(tǒng)的一個(gè)示例的概念圖。圖1A描繪了本地計(jì)算設(shè)備10。本地計(jì)算設(shè)備10可以通過(guò)網(wǎng)絡(luò)2被耦接到一個(gè)或多個(gè)其他計(jì)算設(shè)備。網(wǎng)絡(luò)2可以是因特網(wǎng)。網(wǎng)絡(luò)2替代地可以是任何其他網(wǎng)絡(luò),例如,公用/專(zhuān)用網(wǎng)絡(luò)或無(wú)線網(wǎng)絡(luò)。在圖1中描繪的計(jì)算設(shè)備10是個(gè)人臺(tái)式計(jì)算機(jī)。盡管圖1A中未示出,然而,計(jì)算設(shè)備10可以是被配置成通過(guò)網(wǎng)絡(luò)進(jìn)行通信的任何計(jì)算設(shè)備,例如膝上型計(jì)算機(jī)、蜂窩電話、平板計(jì)算機(jī)、或被配置成通過(guò)網(wǎng)絡(luò)2傳送信息的任何其他設(shè)備,無(wú)論設(shè)備的主要目的是否是基于網(wǎng)絡(luò)的通信。計(jì)算設(shè)備的另一個(gè)示例是被配置成通過(guò)網(wǎng)絡(luò)2進(jìn)行通信的電視。進(jìn)一步,計(jì)算設(shè)備10可以通過(guò)用于網(wǎng)絡(luò)通信的任何數(shù)量的已知機(jī)制,例如到網(wǎng)絡(luò)2的有線連接(例如,以太網(wǎng))或無(wú)線連接(例如,W1-F1、蜂窩),被耦接到網(wǎng)絡(luò)2。如圖1A中所描繪,計(jì)算設(shè)備10通過(guò)網(wǎng)絡(luò)2被耦接到多個(gè)網(wǎng)絡(luò)服務(wù)器計(jì)算設(shè)備16A-16E。為了訪問(wèn)從網(wǎng)絡(luò)服務(wù)器16A-16E可訪問(wèn)的信息,瀏覽器應(yīng)用12可以在本地計(jì)算設(shè)備10上運(yùn)行。瀏覽器12可以被配置成在計(jì)算設(shè)備10的本地操作系統(tǒng)內(nèi)運(yùn)行。已知瀏覽器應(yīng)用的非限制性不例包括 Microsoft Explorer 、Apple Safari 、Mozilla Firefox 和Google Chrome 瀏覽器。用于臺(tái)式和/或膝上型計(jì)算機(jī)的已知操作系統(tǒng)的非限制性示例可以包括Microsoft Vista 、Apple Snow Leopard 或Linux。用于移動(dòng)設(shè)備(例如,智能手機(jī)、上網(wǎng)本等)的已知操作系統(tǒng)的示例包括Microsoft Windows Mobile 、Apple Iphone OS 以及Google Android 移動(dòng)技術(shù)平臺(tái)。瀏覽器12可以使用戶能夠操縱對(duì)通過(guò)網(wǎng)絡(luò)2可訪問(wèn)的信息的訪問(wèn)。例如,瀏覽器12可以向用戶提供輸入一個(gè)或多個(gè)統(tǒng)一資源指示符(URI,例如,www.google, com),以訪問(wèn)web應(yīng)用,諸如超文本標(biāo)記語(yǔ)言(HTML)文檔的能力。Web應(yīng)用和/或web應(yīng)用所使用的信息可以被存儲(chǔ)在一個(gè)或多個(gè)網(wǎng)絡(luò)服務(wù)器16A-16E上。瀏覽器12可以被配置成訪問(wèn)存儲(chǔ)在網(wǎng)絡(luò)服務(wù)器16A-16E上的web應(yīng)用和/或其他信息,以除其他用途外向計(jì)算設(shè)備10的用戶展現(xiàn)視覺(jué)信息。如圖1A中所示,瀏覽器12可以通過(guò)瀏覽器12的窗口或標(biāo)簽向用戶展現(xiàn)一個(gè)或多個(gè)web應(yīng)用15A-15B。在圖1A的示例中僅示出了兩個(gè)web應(yīng)用15A-15B,然而,可以通過(guò)瀏覽器12向用戶同時(shí)展現(xiàn)單個(gè)web應(yīng)用或多于兩個(gè)web應(yīng)用。在一個(gè)示例中,web應(yīng)用15A-15B中的一個(gè)或多個(gè)是被配置成向用戶展現(xiàn)視覺(jué)描繪(例如,HTML文檔)的web應(yīng)用。Web應(yīng)用15A-15B中的一個(gè)或多個(gè)可以進(jìn)一步向用戶展現(xiàn)功能,例如,使用戶能夠進(jìn)行通信、導(dǎo)航到其他web應(yīng)用、查看地圖、查看日歷、玩游戲、收聽(tīng)音樂(lè)、觀看視頻、訪問(wèn)(例如,上載)對(duì)用戶的計(jì)算設(shè)備是本地的信息或任何其他形式的功能。同樣如圖1A中所示,瀏覽器12包括共享工作器14。在各個(gè)示例中,共享工作器14被配置成獲得網(wǎng)絡(luò)可訪問(wèn)的信息,例如存儲(chǔ)在圖1的示例中的一個(gè)或多個(gè)網(wǎng)絡(luò)服務(wù)器16A-16C上的信息,并且向一個(gè)或多個(gè)web應(yīng)用15A-15B提供所獲得的信息。共享工作器應(yīng)用14可以被進(jìn)一步配置成將所獲得的信息存儲(chǔ)在計(jì)算設(shè)備10的本地存儲(chǔ)器中,以使共享工作器14可以使用該信息來(lái)滿足來(lái)自一個(gè)或多個(gè)web應(yīng)用15A-15B的對(duì)相同或相似信息的一個(gè)或多個(gè)請(qǐng)求。例如,如果web應(yīng)用15A已請(qǐng)求過(guò)共享工作器14響應(yīng)于該請(qǐng)求獲得并且被存儲(chǔ)在本地存儲(chǔ)器中的某些網(wǎng)絡(luò)可訪問(wèn)的信息,如果web應(yīng)用15B傳送對(duì)相似信息的請(qǐng)求,則共享工作器可以訪問(wèn)存儲(chǔ)在本地存儲(chǔ)器中的信息來(lái)滿足來(lái)自web應(yīng)用15B的請(qǐng)求。根據(jù)本公開(kāi)的技術(shù),共享工作器14可以進(jìn)一步創(chuàng)建一個(gè)或多個(gè)子組件18的實(shí)例和/或使得能夠與一個(gè)或多個(gè)子組件18的實(shí)例進(jìn)行通信/在一個(gè)或多個(gè)子組件18的實(shí)例之間進(jìn)行通信。如在此所述的子組件18是被配置成由多于一個(gè)web應(yīng)用使用的web應(yīng)用功能的預(yù)定義實(shí)現(xiàn)。如在此所述的子組件實(shí)例18A、18B指用于特定web應(yīng)用15A、15B的子組件功能的實(shí)現(xiàn)。在一些示例中,子組件實(shí)例18A、18B包括web應(yīng)用功能的視覺(jué)渲染。例如,web應(yīng)用15A、15B可以利用子組件18的一個(gè)或多個(gè)實(shí)例18A、18B,諸如即時(shí)消息(聊天)窗口、聯(lián)系人采集器、日歷事件輸入/更新窗口、照片上載和/或展現(xiàn)子窗口、或音頻/視頻展現(xiàn)/播放器窗口、或可以由多于一個(gè)web應(yīng)用使用的任何其他功能。
如在此所述的共享工作器14可以是計(jì)算設(shè)備可執(zhí)行來(lái)獲得網(wǎng)絡(luò)可訪問(wèn)的信息和/或?qū)υ跒g覽器12中執(zhí)行的web應(yīng)用的子組件實(shí)例(例如,18A、18B)/視覺(jué)用戶接口進(jìn)行更新的軟件。在一個(gè)特定示例中,共享工作器14可以是以JavaScript語(yǔ)言編寫(xiě)的軟件(程序指令)的一個(gè)或多個(gè)獨(dú)立線程。在其他示例中,共享工作器14可以包括以任何其他語(yǔ)言編寫(xiě)的軟件。圖1B圖示展現(xiàn)不同子組件的實(shí)例48A和49A的兩個(gè)示例的主機(jī)(主要)web應(yīng)用45(與URL www.mail, google, com相關(guān)聯(lián)的HTML文檔)的一個(gè)非限制性示例。如在此所述,子組件是定義被配置成由多于一個(gè)web應(yīng)用使用的功能的軟件。如在此所述的子組件的實(shí)例是子組件與web應(yīng)用一起的實(shí)現(xiàn)。如圖1B中所示的第一子組件實(shí)例48A是聯(lián)系人采集器子組件的實(shí)例。如所示,子組件實(shí)例48A在主機(jī)web應(yīng)用35的視覺(jué)描繪的一部分上展現(xiàn)子組件功能的視覺(jué)描繪。例如,子組件實(shí)例48A向用戶提供用來(lái)搜索聯(lián)系人、選擇聯(lián)系人、添加聯(lián)系人、查看建議的聯(lián)系人和/或在用戶的已定義的聯(lián)系人內(nèi)找到重復(fù)的聯(lián)系人的視覺(jué)控件。在圖1B中還示出了第二子組件實(shí)例49A。第二子組件實(shí)例49A是聊天窗口子組件的實(shí)例。聊天窗口向用戶展現(xiàn)了大概與另一個(gè)用戶的聊天內(nèi)容。盡管在圖1B中未示出,然而,聊天窗口可以示出用戶所發(fā)送或接收的消息。如圖1B中所示,聊天窗口還展現(xiàn)了文本輸入框50以供用戶輸入消息。僅出于說(shuō)明目的,提供了圖1B的示例,并且其意在是非限制性的。如在此所述的子組件是可以由多于一個(gè)web應(yīng)用或單個(gè)web應(yīng)用的多于一個(gè)實(shí)例利用的任何一致功能。Web應(yīng)用使用子組件可以是有利的,因?yàn)槭褂锰囟ㄗ咏M件的每一個(gè)web應(yīng)用不必獨(dú)立定義該子組件。如此,對(duì)于在其中期望子組件的功能的每一個(gè)web應(yīng)用,可以重復(fù)使用而不是重新編寫(xiě)定義子組件的代碼(例如,Java script)。進(jìn)一步,使用預(yù)定義的子組件可以使功能集成不那么復(fù)雜。另外,共同子組件可以通過(guò)跨多個(gè)不同web應(yīng)用提供一致性來(lái)改進(jìn)用戶體驗(yàn),例如,每次用戶使用用于不同web應(yīng)用的類(lèi)似功能時(shí),用戶不必重新學(xué)習(xí)如何操作特定功能。例如,可以通過(guò)電子郵件web應(yīng)用(例如,gmail:www.gmail.com)和聯(lián)系人web應(yīng)用(例如,www.google, com/contacts)兩者向用戶展現(xiàn)相同的聯(lián)系人采集器子組件。然而,已知的瀏覽器實(shí)現(xiàn)12可能以相對(duì)無(wú)效的方式提供子組件功能。例如,根據(jù)已知的瀏覽器實(shí)現(xiàn),可以將定義子組件功能的代碼嵌入在定義web應(yīng)用自身的代碼中。嵌入式子組件代碼可能是不期望的,因?yàn)楠?dú)立于使用子組件的主機(jī)web應(yīng)用的發(fā)布周期對(duì)定義該子組件的代碼進(jìn)行更新可能很難。并且,典型地,從一個(gè)或多個(gè)網(wǎng)絡(luò)服務(wù)器(例如,圖1A的示例中的服務(wù)器16A-16C)訪問(wèn)定義web應(yīng)用的這樣的代碼(以及相關(guān)聯(lián)的子組件代碼)。如此,為了在瀏覽器12中運(yùn)作的兩個(gè)web應(yīng)用15A、15B使用相同子組件18,從一個(gè)或多個(gè)網(wǎng)絡(luò)服務(wù)器兩次訪問(wèn)定義子組件18的實(shí)例的代碼。通過(guò)網(wǎng)絡(luò)2不必要地訪問(wèn)信息可能是不期望的,尤其在計(jì)算設(shè)備10通過(guò)很慢和/或間歇網(wǎng)絡(luò)2連接(例如,諸如蜂窩網(wǎng)絡(luò)的移動(dòng)網(wǎng)絡(luò))被耦接到一個(gè)或多個(gè)網(wǎng)絡(luò)服務(wù)器16A-16C的情況下。出于其他原因,每web應(yīng)用通過(guò)網(wǎng)絡(luò)對(duì)子組件18實(shí)例化可能也是不期望的。例如,對(duì)于一些子組件(例如,聊天窗口、聯(lián)系人采集器),可能期望的是,在兩個(gè)或更多個(gè)子組件18實(shí)例之間同步狀態(tài)。例如,在用戶使兩個(gè)瀏覽器窗口或標(biāo)簽打開(kāi)以顯示利用聊天窗口子組件18A-18B的兩個(gè)(相同或不同)web應(yīng)用時(shí),可能期望的是,當(dāng)消息被鍵入到第一聊天窗口時(shí)對(duì)第二聊天窗口進(jìn)行更新。根據(jù)已知的瀏覽器實(shí)現(xiàn),為了執(zhí)行這樣的更新,第一子組件實(shí)例18A可以將狀態(tài)改變(例如,新的消息)傳送給一個(gè)或多個(gè)網(wǎng)絡(luò)服務(wù)器16A-16C。該一個(gè)或多個(gè)網(wǎng)絡(luò)服務(wù)器16A-16C然后可以將該狀態(tài)更新傳送到托管第二子組件實(shí)例18B的web應(yīng)用。托管web應(yīng)用然后可以相應(yīng)地更新第二子組件實(shí)例18B。該實(shí)現(xiàn)可能是不期望的,因?yàn)樵撏綘顟B(tài)需要通過(guò)網(wǎng)絡(luò)2的通信來(lái)在第一和第二子組件實(shí)例18A、18B之間同步狀態(tài)。在計(jì)算設(shè)備10通過(guò)很慢和/或間歇網(wǎng)絡(luò)2連接(例如,諸如蜂窩網(wǎng)絡(luò)的移動(dòng)網(wǎng)絡(luò))被耦接到網(wǎng)絡(luò)服務(wù)器16A-16C的情況下,這可能是尤其不期望的。在另一個(gè)示例中,已知的瀏覽器實(shí)現(xiàn)可能需要與每一個(gè)子組件實(shí)例18A、18B相關(guān)聯(lián)的信息被獨(dú)立存儲(chǔ)在計(jì)算設(shè)備的本地存儲(chǔ)器中。這可能也是不期望的,因?yàn)樵黾恿嗽L問(wèn)存儲(chǔ)器的需求,以及信息可能在存儲(chǔ)器中不必要地被復(fù)制。本公開(kāi)的技術(shù)解決了已知web瀏覽器實(shí)現(xiàn)為web應(yīng)用創(chuàng)建子組件的實(shí)例以及在子組件的實(shí)例之間共享狀態(tài)更新的上述不足。如此,如在圖1A中所示,瀏覽器12合并有共享工作器應(yīng)用14。在一個(gè)示例中,共享工作器14可以為一個(gè)或多個(gè)web應(yīng)用15A、15B創(chuàng)建一個(gè)或多個(gè)子組件18的實(shí)例(子組件實(shí)例18A、18B表示單個(gè)子組件18的實(shí)例)。例如,根據(jù)來(lái)自web應(yīng)用15A的請(qǐng)求,共享工作器14可以通過(guò)網(wǎng)絡(luò)2從一個(gè)或多個(gè)網(wǎng)絡(luò)服務(wù)器16A-16C獲得定義子組件18的軟件代碼。共享工作器14可以將定義子組件18的軟件代碼傳送給web應(yīng)用15A,以為web應(yīng)用15A創(chuàng)建子組件18的實(shí)例18A。在一個(gè)示例中,共享工作器14可以對(duì)web應(yīng)用15A進(jìn)行分析來(lái)為子組件實(shí)例18A確定適當(dāng)位置。共享工作器14可以進(jìn)一步確定子組件實(shí)例18A的形狀。在一個(gè)示例中,共享工作器14可以對(duì)定義子組件18的軟件代碼進(jìn)行修改,來(lái)提供將子組件實(shí)例18A定義成符合用于子組件實(shí)例18A的相對(duì)于web應(yīng)用15A的適當(dāng)位置和/或尺寸/形狀的軟件代碼。共享工作器14可以進(jìn)一步將定義子組件18的軟件代碼存儲(chǔ)在瀏覽器12正在其上運(yùn)作的計(jì)算設(shè)備10的本地存儲(chǔ)器中。如此,共享工作器14可以根據(jù)來(lái)自第二 web應(yīng)用15B的創(chuàng)建相同子組件18的第二實(shí)例18B的第二請(qǐng)求,基于存儲(chǔ)在本地存儲(chǔ)器中的軟件代碼來(lái)創(chuàng)建子組件18的第二實(shí)例18B。因此,根據(jù)本公開(kāi)的技術(shù),通過(guò)共享工作器14共享子組件18可以減少訪問(wèn)網(wǎng)絡(luò)2來(lái)獲得創(chuàng)建子組件18的實(shí)例18A、18B的代碼的需求。在另一個(gè)示例中,本公開(kāi)的技術(shù)提供了對(duì)一個(gè)或多個(gè)子組件實(shí)例的改進(jìn)的更新。例如,如圖1A中所示,瀏覽器12可操作來(lái)向用戶展現(xiàn)第一 web應(yīng)用15A。第一 web應(yīng)用15A使用子組件18的第一實(shí)例18A。子組件18的第一實(shí)例18A如上所述可能已由共享工作器12創(chuàng)建。子組件實(shí)例18A可以接收更新。例如,在子組件18是聊天窗口的情況下,子組件實(shí)例18A可以接收以聊天消息形式的狀態(tài)更新。根據(jù)已知的瀏覽器實(shí)現(xiàn),使用子組件實(shí)例18A的web應(yīng)用將自身基于該web應(yīng)用的代碼來(lái)更新子組件實(shí)例18A (例如,子組件功能的視覺(jué)渲染)以反映狀態(tài)更新。根據(jù)本公開(kāi)的技術(shù),可以將狀態(tài)更新發(fā)送給共享工作器14,并且共享工作器14可以作為響應(yīng)發(fā)送可以被執(zhí)行來(lái)渲染子組件實(shí)例18A的更新版本的軟件代碼,而不是web應(yīng)用15A自身更新子組件實(shí)例18A的渲染來(lái)反映狀態(tài)更新。在另一個(gè)示例中,本公開(kāi)的技術(shù)提供了對(duì)子組件18的子組件實(shí)例18A、18B的改進(jìn)的狀態(tài)同步。例如,如圖1A中所示,瀏覽器12被運(yùn)作來(lái)向用戶展現(xiàn)第一 web應(yīng)用15A和第二 web應(yīng)用15B。第一和第二 web應(yīng)用15A、15B可以分別展現(xiàn)子組件18的第一和第二實(shí)例18A、18B。子組件18的第一和第二實(shí)例18A-18B如上所述可能已由共享工作器12實(shí)例化。共享工作器14可以使得能夠進(jìn)行對(duì)計(jì)算設(shè)備10是本地的對(duì)子組件實(shí)例18A、18B狀態(tài)的通信。例如,第一子組件實(shí)例18A可以接收狀態(tài)更新(例如,在子組件18A是即時(shí)消息窗口的情況下,子組件18A可以接收用戶消息)。子組件實(shí)例18A (或主機(jī)web應(yīng)用15A)可以將該狀態(tài)更新傳送給共享工作器14。共享工作器14可以在接收了該狀態(tài)更新時(shí),將該狀態(tài)更新傳送給第一子組件實(shí)例18A和第二子組件實(shí)例18B中的一個(gè)或多個(gè)。在一些示例中,將狀態(tài)更新傳送給第一和第二子組件實(shí)例中的一個(gè)或多個(gè)包括對(duì)該一個(gè)或多個(gè)子組件實(shí)例的視覺(jué)描繪進(jìn)行更新。在一個(gè)示例中,將狀態(tài)更新傳送給一個(gè)或多個(gè)子組件實(shí)例18A、18B可以包括將被更新成合并有(來(lái)自第一子組件實(shí)例18A的)所接收的狀態(tài)更新的至少一個(gè)軟件代碼部分傳送給主機(jī)web應(yīng)用15A、15B中的一個(gè)或多個(gè)。因此,可以(例如,通過(guò)執(zhí)行定義該子組件的更新的軟件代碼)對(duì)子組件實(shí)例18A、18B進(jìn)行更新來(lái)反映子組件實(shí)例18A的狀態(tài)更新(例如,可以通過(guò)子組件實(shí)例18A、18B的視覺(jué)描繪向用戶顯示該用戶消息)。在一些示例中,共享工作器14可以進(jìn)一步將所接收的狀態(tài)更新(和/或被更新成合并有該狀態(tài)更新的軟件代碼)本地存儲(chǔ)在例如計(jì)算設(shè)備10的暫時(shí)性存儲(chǔ)器中,使得可以向子組件18的另一個(gè)實(shí)例(圖1中未示出)提供該狀態(tài)更新。因此,根據(jù)本公開(kāi)的技術(shù),通過(guò)共享工作器14共享子組件實(shí)例18A-18B狀態(tài)更新可以減少訪問(wèn)網(wǎng)絡(luò)2的需求,因?yàn)闋顟B(tài)更新對(duì)瀏覽器12正在其上運(yùn)作的計(jì)算設(shè)備10是本地通信的。并且,根據(jù)該示例,由于與子組件實(shí)例18A、18B相關(guān)聯(lián)的信息可以由共享工作器14存儲(chǔ)在單個(gè)位置,并且隨著對(duì)該信息的需求產(chǎn)生為子組件實(shí)例18A-18B提供,因此,可以使存儲(chǔ)在本地存儲(chǔ)器中的重復(fù)信息最小化。圖2是圖示與本公開(kāi)的技術(shù)一致的計(jì)算設(shè)備和在該計(jì)算設(shè)備上執(zhí)行的包括共享工作器應(yīng)用34以及第一 38A和第二 38B用戶接口(UI)元件的瀏覽器12的一個(gè)示例的概念圖。如在上面參考圖1A和IB所述,可以將子組件18描述為被配置成由多于一個(gè)web應(yīng)用使用的web應(yīng)用功能的預(yù)定義實(shí)現(xiàn)。可以將子組件實(shí)例18A、18B描述為用于特定web應(yīng)用15A、15B的子組件功能的實(shí)現(xiàn)。例如,子組件實(shí)例18A、18B可以是用于特定web應(yīng)用的子組件15功能的視覺(jué)渲染。以這種方式,如圖2中所示,子組件實(shí)例18A可以被認(rèn)為是第一用戶接口(UI)元件38A。類(lèi)似地,子組件實(shí)例18B可以被認(rèn)為是第二 Π元件38B。第一 Π元件38A可以基本上類(lèi)似于第二 UI元件38B。例如,第一和第二 UI元件38A和38B可以被配置為特定子組件的第一和第二實(shí)例,例如,第一和第二 Π元件38A和38B中的每一個(gè)在視覺(jué)上表示相同或基本上相似的功能。在一些示例中,可以與UI元件38B所表示的功能共享UI元件38A的某個(gè)功能。在一些示例中,與Π元件38B相比,Π元件38A可以表示另外功能,然而仍然表示Π元件38B的功能的至少部分(例如,Π元件38A和38B兩者均可以向用戶展現(xiàn)聊天窗口、聯(lián)系人采集器或其他功能)。如圖2中所示,瀏覽器12可以執(zhí)行共享工作器應(yīng)用34。類(lèi)似于在上面參考圖1A和IB所述的示例,共享工作器應(yīng)用34可以為一個(gè)或多個(gè)web應(yīng)用(例如,圖2的示例中的35A、35B)創(chuàng)建UI元件38A、38B。例如,根據(jù)來(lái)自web應(yīng)用35A的請(qǐng)求,共享工作器34可以通過(guò)網(wǎng)絡(luò)2從一個(gè)或多個(gè)網(wǎng)絡(luò)服務(wù)器16A-16C獲得定義第一 UI元件38A的軟件代碼。在一個(gè)示例中,共享工作器14可以對(duì)web應(yīng)用35A進(jìn)行分析來(lái)為第一 UI元件38A確定適當(dāng)位置。共享工作器34可以進(jìn)一步確定第一 Π元件38A的形狀。在一個(gè)示例中,共享工作器34可以對(duì)定義第一 UI元件38A的軟件代碼(例如,可執(zhí)行來(lái)通過(guò)計(jì)算設(shè)備10的顯示器渲染第一 UI元件38A的軟件代碼)進(jìn)行修改,來(lái)提供將子組件實(shí)例38A定義成符合用于子組件實(shí)例38A的相對(duì)于web應(yīng)用35A的適當(dāng)位置和/或尺寸/形狀的軟件代碼。共享工作器34可以進(jìn)一步將定義第一 UI元件38A的軟件代碼存儲(chǔ)在瀏覽器12正在其上運(yùn)作的計(jì)算設(shè)備10的本地存儲(chǔ)器中。如此,共享工作器34可以根據(jù)來(lái)自第二 web應(yīng)用35B的創(chuàng)建基本上類(lèi)似于第一 UI元件38A的第二 UI元件38B的第二請(qǐng)求,基于存儲(chǔ)在本地存儲(chǔ)器中的軟件代碼來(lái)創(chuàng)建第二 Π元件38B。因此,根據(jù)本公開(kāi)的技術(shù),通過(guò)共享工作器34創(chuàng)建UI元件38A-38B可以減少訪問(wèn)網(wǎng)絡(luò)2來(lái)獲得創(chuàng)建UI元件38A-38B的代碼的需求。在另一個(gè)示例中,本公開(kāi)的技術(shù)提供了一個(gè)或多個(gè)Π元件38A-38B的改進(jìn)的更新。例如,如圖2中所示,瀏覽器12可操作來(lái)向用戶展現(xiàn)第一 Π元件38A。第一 Π元件38A如上所述可能已由共享工作器32創(chuàng)建。第一 Π元件38A可以接收更新。例如,在第
一UI元件38A是聊天窗口的情況下,第一 UI元件38A可以接收以聊天消息形式的狀態(tài)更新。根據(jù)已知瀏覽器實(shí)現(xiàn),web應(yīng)用35A將自身基于web應(yīng)用35A的代碼來(lái)更新第一 UI元件38A以反映狀態(tài)更新。根據(jù)本公開(kāi)的技術(shù),可以將狀態(tài)更新發(fā)送給共享工作器34,并且共享工作器34可以作為響應(yīng)提供可以被執(zhí)行來(lái)渲染第一 UI元件38A的更新版本的軟件代碼,而不是web應(yīng)用35A自身更新第一 UI元件38A來(lái)反映狀態(tài)更新。在另一個(gè)示例中,本公開(kāi)的技術(shù)提供了對(duì)多個(gè)Π元件38A-38B的改進(jìn)的狀態(tài)同步。例如,如圖2中所示,瀏覽器12被運(yùn)作來(lái)向用戶展現(xiàn)第一 web應(yīng)用35A和第二 web應(yīng)用35B。第一和第二 web應(yīng)用35A、35B可以分別展現(xiàn)第一和第二 UI元件38A-38B。第一和第二 UI元件38A-38B可以表示基本上類(lèi)似的功能。例如,第一和第二 UI元件38A-38B每一個(gè)可以表示諸如聊天窗口或聯(lián)系人采集器的功能。共享工作器34可以使得能夠進(jìn)行對(duì)計(jì)算設(shè)備10是本地的對(duì)UI元件38A、38B狀態(tài)的通信。例如,第一 Π元件38A可以接收狀態(tài)更新(例如,在第一 Π元件38A是聊天窗口的情況下,子組件38A可以接收用戶消息)。第一 UI元件38A或主機(jī)web應(yīng)用35A可以將該狀態(tài)更新傳送給共享工作器34。共享工作器34可以在接收了該狀態(tài)更新時(shí),傳送被更新成合并有來(lái)自第一 Π元件38A的所接收的狀態(tài)更新的至少一個(gè)軟件代碼部分。因此,可以(例如,通過(guò)執(zhí)行定義UI元件38A、38B的更新的軟件代碼)對(duì)第一和第二 UI元件38A、38B進(jìn)行更新來(lái)反映第一 Π元件38A的狀態(tài)更新(例如,可以向用戶顯示該用戶消息)。在一些示例中,共享工作器34可以進(jìn)一步將所接收的狀態(tài)更新(和/或被更新成合并有該狀態(tài)更新的軟件代碼)本地存儲(chǔ)在例如計(jì)算設(shè)備10的暫時(shí)性存儲(chǔ)器中,使得可以向web應(yīng)用35A、35B的另一個(gè)Π元件或在計(jì)算設(shè)備10上執(zhí)行的另一個(gè)web應(yīng)用(圖1中未示出)提供該狀態(tài)更新。圖3是圖示可以由在此描述的技術(shù)使用的計(jì)算系統(tǒng)25的組件的一個(gè)示例的概念圖。如在圖3中所描繪,計(jì)算系統(tǒng)25可以被包括在各種類(lèi)型的計(jì)算設(shè)備中。例如,設(shè)備20A是臺(tái)式計(jì)算機(jī)。設(shè)備20B是膝上型計(jì)算機(jī)。設(shè)備20C是網(wǎng)絡(luò)服務(wù)器或大型計(jì)算機(jī)。盡管圖3中未描繪,合并有計(jì)算系統(tǒng)25的設(shè)備可以替代地包括被配置成通過(guò)網(wǎng)絡(luò)進(jìn)行計(jì)算和/或通信的任何數(shù)量的其他設(shè)備,包括移動(dòng)設(shè)備,諸如移動(dòng)電話、個(gè)人數(shù)字助理、智能手機(jī)、平板計(jì)算機(jī)或任何其他移動(dòng)設(shè)備。同樣在圖3中未描繪的,合并有計(jì)算系統(tǒng)25的設(shè)備可以包括專(zhuān)用于其他功能的設(shè)備,例如被配置成通過(guò)網(wǎng)絡(luò)進(jìn)行通信的電視。設(shè)備20A-20C的任何一個(gè)可以表示在圖1A和圖2中所描繪的本地計(jì)算設(shè)備10。設(shè)備20A-20C的任何一個(gè)還可以表示在圖1A和圖2中所描繪的網(wǎng)絡(luò)服務(wù)器16A-16E。系統(tǒng)25包括處理器22、存儲(chǔ)器26、存儲(chǔ)設(shè)備24和輸入/輸出組件29。組件22、
24、26和29中的每一個(gè)可以通過(guò)用于組件間通信的系統(tǒng)總線28互連。處理器22可以被配置成處理用于在系統(tǒng)25內(nèi)執(zhí)行的指令。處理器22可以是單線程處理器、或可以替代地是被配置成同時(shí)并行處理各種指令的多線程處理器。處理器22可以能夠?qū)Υ鎯?chǔ)在存儲(chǔ)器26中的指令或存儲(chǔ)在存儲(chǔ)設(shè)備24上的指令進(jìn)行處理。在一個(gè)示例中,處理器22可以被配置成對(duì)指令進(jìn)行處理以促使瀏覽器12在系統(tǒng)25上與本公開(kāi)的技術(shù)一致運(yùn)作。系統(tǒng)25進(jìn)一步可以包括外圍設(shè)備27。外圍設(shè)備27可以包括例如用于向系統(tǒng)25的用戶展現(xiàn)視覺(jué)信息的監(jiān)視器或其他顯示設(shè)備。外圍設(shè)備27可以進(jìn)一步包括使用戶能夠向系統(tǒng)25輸入數(shù)據(jù)的一個(gè)或多個(gè)輸入設(shè)備,例如鍵盤(pán)、鼠標(biāo)、觸摸板、軌跡板、觸摸屏等。外圍設(shè)備27可以進(jìn)一步包括打印機(jī)、監(jiān)視器、揚(yáng)聲器或用來(lái)輸出信息的其他設(shè)備。在一個(gè)示例中,處理器22可以被配置成對(duì)指令進(jìn)行處理以促使例如圖1A和圖2的瀏覽器12的瀏覽器的視覺(jué)描繪向用戶顯示。如圖3中所示,瀏覽器12可以包括如在此所述的共享工作器應(yīng)用14。如上所述,共享工作器14可以被配置成為一個(gè)或多個(gè)web應(yīng)用實(shí)例化子組件和/或使得能夠進(jìn)行子組件實(shí)例的本地同步。瀏覽器12可以在圖3中描繪和/或上述的設(shè)備20A-20D的任何一個(gè)的處理器上運(yùn)作。存儲(chǔ)器26可以被配置成在操作期間存儲(chǔ)在系統(tǒng)600內(nèi)的信息。可以將存儲(chǔ)器26描述為計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。在一些示例中,存儲(chǔ)器26是暫時(shí)性存儲(chǔ)器,意為存儲(chǔ)器26的主要目的不是長(zhǎng)期存儲(chǔ)。還可以將存儲(chǔ)器26描述為易失性存儲(chǔ)器,意為存儲(chǔ)器26在關(guān)閉計(jì)算機(jī)時(shí)不維持存儲(chǔ)的內(nèi)容。易失性存儲(chǔ)器的示例包括隨機(jī)存取存儲(chǔ)器(RAM)、動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)以及本領(lǐng)域已知的其他形式的存儲(chǔ)器。在一些示例中,可以使用存儲(chǔ)器26來(lái)存儲(chǔ)程序指令以供處理器22執(zhí)行。在其他示例中,存儲(chǔ)器26可以由運(yùn)行于系統(tǒng)25上的軟件或應(yīng)用使用來(lái)在程序執(zhí)行期間暫時(shí)存儲(chǔ)信息。也可以將存儲(chǔ)設(shè)備24描述為計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。與存儲(chǔ)器26相比,存儲(chǔ)設(shè)備24可以被配置成存儲(chǔ)比存儲(chǔ)器26更大量的信息。存儲(chǔ)設(shè)備24可以被進(jìn)一步配置為對(duì)信息進(jìn)行長(zhǎng)期存儲(chǔ)。在一些示例中,存儲(chǔ)設(shè)備24是非易失性存儲(chǔ)器組件。與易失性存儲(chǔ)器組件相比,無(wú)論是否向存儲(chǔ)設(shè)備24供應(yīng)電力,非易失性存儲(chǔ)器均可以存儲(chǔ)數(shù)據(jù)。非易失性存儲(chǔ)設(shè)備的示例包括磁硬盤(pán)、光盤(pán)、軟盤(pán)、閃存以及其他形式的電可編程存儲(chǔ)器(EPROM)或電可擦可編程(EEPROM)存儲(chǔ)器。在此描述的技術(shù)可以根據(jù)如參考圖3描述的計(jì)算系統(tǒng)25,以數(shù)字電子電路、計(jì)算機(jī)硬件、固件、軟件或數(shù)字電子電路、計(jì)算機(jī)硬件、固件、軟件的任何組合來(lái)實(shí)現(xiàn)。例如,任何在此描述的技術(shù)可以通過(guò)存儲(chǔ)在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)(例如,存儲(chǔ)設(shè)備24、存儲(chǔ)器26)中、處理器22可讀取來(lái)促使處理器22執(zhí)行本公開(kāi)的技術(shù)的可執(zhí)行程序指令來(lái)實(shí)現(xiàn)。如在此所述的計(jì)算機(jī)可讀介質(zhì)可以被認(rèn)為是非暫時(shí)性計(jì)算機(jī)可讀介質(zhì)。在其他示例中,本公開(kāi)的技術(shù)中的部分或全部可以替代或另外通過(guò)為特定目的配置的專(zhuān)用硬件來(lái)實(shí)現(xiàn),例如,現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)、專(zhuān)用集成電路(ASIC)、數(shù)字信號(hào)處理器(DSP)或類(lèi)似設(shè)備。圖4是圖示與在此描述的技術(shù)一致的合并有被配置成創(chuàng)建一個(gè)或多個(gè)子組件18的實(shí)例和/或使得能夠進(jìn)行子組件實(shí)例18A、18B狀態(tài)的本地同步的共享工作器應(yīng)用14的瀏覽器12的一個(gè)示例的框圖。如圖4中所示,瀏覽器12可以被操作來(lái)向用戶顯示第一 web應(yīng)用15A。第一 web應(yīng)用15A可能期望使用子組件18的功能。子組件18定義至少一些web應(yīng)用功能并且被配置成由多于一個(gè)web應(yīng)用使用。在一些示例中,至少一個(gè)子組件可以展現(xiàn)web應(yīng)用功能的視覺(jué)描繪。在一個(gè)示例中,第一 web應(yīng)用15A可以將創(chuàng)建子組件18的實(shí)例的請(qǐng)求傳送給共享工作器應(yīng)用14。在其中根據(jù)HTML5規(guī)范定義共享工作器14的一個(gè)示例中,請(qǐng)求可以是“instantiateComponent”請(qǐng)求。該請(qǐng)求可以指示為發(fā)出請(qǐng)求的web應(yīng)用15A或不同web應(yīng)用(例如,圖4示例中的web應(yīng)用15B)創(chuàng)建子組件實(shí)例18A。響應(yīng)于該請(qǐng)求(或當(dāng)共享工作器14可以獨(dú)立創(chuàng)建子組件18的實(shí)例時(shí),獨(dú)立于該請(qǐng)求),共享工作器14可以為第一 web應(yīng)用18A創(chuàng)建子組件18的第一實(shí)例18A。在一個(gè)示例中,共享工作器14創(chuàng)建子組件18的實(shí)例18A可以包括共享工作器14傳送定義子組件18A的一個(gè)或多個(gè)軟件代碼部分。在一個(gè)示例中,該一個(gè)或多個(gè)軟件代碼部分可以以通常用于web應(yīng)用編程的Javascript語(yǔ)言定義。在其他示例中,該一個(gè)或多個(gè)軟件代碼部分可以根據(jù)字節(jié)碼或指令表來(lái)定義。其他編程語(yǔ)言所定義的軟件代碼部分也是預(yù)期的并且與本公開(kāi)的技術(shù)一致。該一個(gè)或多個(gè)軟件代碼部分可以由一個(gè)或多個(gè)處理器(例如,在上面圖2中描繪的處理器22)執(zhí)行來(lái)創(chuàng)建子組件實(shí)例18A。共享工作器14還可以將該一個(gè)或多個(gè)軟件代碼部分存儲(chǔ)在計(jì)算設(shè)備10的本地存儲(chǔ)器25中以供稍后使用。在一個(gè)示例中,響應(yīng)于創(chuàng)建子組件18實(shí)例18A的請(qǐng)求,共享工作器14可以向web應(yīng)用15A發(fā)送包括以下中的一個(gè)或多個(gè)的響應(yīng)消息:1)子組件和/或子組件的特定實(shí)例的標(biāo)識(shí)符;2)子組件的目標(biāo)(例如,在web應(yīng)用上用于待被渲染的子組件的視覺(jué)描繪的幀或空間);3)當(dāng)子組件實(shí)例檢測(cè)到任何事件(例如,狀態(tài)改變)時(shí)該子組件實(shí)例調(diào)用的函數(shù);以及4)存儲(chǔ)器中用來(lái)存儲(chǔ)與子組件相關(guān)聯(lián)的任何信息的地方??梢詫㈨憫?yīng)消息的上述內(nèi)容包括在傳送給web應(yīng)用15A的軟件代碼部分中。上述內(nèi)容可以替代地利用軟件代碼部分被傳送、或獨(dú)立地被傳送。在其中根據(jù)HTML5規(guī)范定義響應(yīng)消息的上述內(nèi)容的一個(gè)特定示例中,子組件的目標(biāo)(在上面的2)可以由“ -targetElement”命令識(shí)別,當(dāng)子組件實(shí)例檢測(cè)到任何事件時(shí)調(diào)用的函數(shù)(在上面的3)可以由“eventFunct (event Message) ”命令識(shí)別,以及存儲(chǔ)與子組件相關(guān)聯(lián)的信息的地方(在上面的4)可以由“-uiContext”命令定義。共享工作器14可以進(jìn)一步為子組件實(shí)例18A控制狀態(tài)更新。子組件實(shí)例18A可以接收狀態(tài)更新。根據(jù)其中子組件實(shí)例18A表示聊天窗口子組件18的示例,子組件實(shí)例18A可以接收用戶消息。根據(jù)已知瀏覽器實(shí)現(xiàn),子組件實(shí)例18A所接收的狀態(tài)更新可以由web應(yīng)用15A的代碼進(jìn)行處理,并且web應(yīng)用15A可以操作來(lái)根據(jù)該更新渲染子組件實(shí)例18A的視覺(jué)描繪。然而,根據(jù)在此描述的技術(shù),狀態(tài)更新可以由子組件實(shí)例18A自身或主機(jī)web應(yīng)用15A傳送給共享工作器14。作為響應(yīng),共享工作器14可以對(duì)定義子組件18的軟件代碼進(jìn)行更新來(lái)合并有該狀態(tài)更新。因此,可以執(zhí)行定義子組件18的軟件代碼的更新版本來(lái)與該狀態(tài)更新一致地渲染子組件實(shí)例18A的視覺(jué)描繪。
同樣如圖4中所示,瀏覽器12可以運(yùn)作第二 web應(yīng)用15B。如同第一 web應(yīng)用15A,第二 web應(yīng)用15B可能期望利用與子組件18相關(guān)聯(lián)的功能。如此,第二 web應(yīng)用15B可以向共享工作器14傳送實(shí)例化子組件18的請(qǐng)求。響應(yīng)于該請(qǐng)求(或當(dāng)共享工作器14自身可以確定是否實(shí)例化子組件18時(shí),獨(dú)立地),共享工作器14可以為主機(jī)web應(yīng)用15B創(chuàng)建子組件實(shí)例18B。在一個(gè)示例中,創(chuàng)建子組件實(shí)例18B包括共享工作器14將定義子組件18的一個(gè)或多個(gè)軟件代碼部分傳送給第二 web應(yīng)用15B。在一個(gè)示例中,可以從本地存儲(chǔ)器(例如,如在上面圖3中所示的本地存儲(chǔ)器25)訪問(wèn)定義子組件18的該一個(gè)或多個(gè)軟件代碼部分。在一個(gè)示例中,定義子組件18的該一個(gè)或多個(gè)軟件代碼部分可能先前在共享工作器14創(chuàng)建子組件實(shí)例18A時(shí)已被存儲(chǔ)。該一個(gè)或多個(gè)軟件代碼部分可以由一個(gè)或多個(gè)處理器(例如,在上面圖3中所描繪的處理器22)執(zhí)行來(lái)創(chuàng)建子組件實(shí)例18B。在上面參考圖4所述的示例假設(shè):當(dāng)web應(yīng)用15A、15B中的一個(gè)或多個(gè)期望使用子組件18功能時(shí),共享工作器14已在瀏覽器12上運(yùn)行。在其他示例中,共享工作器14可能沒(méi)在瀏覽器12中運(yùn)行。根據(jù)這些示例,一個(gè)或多個(gè)web應(yīng)用15A、15B可以促使共享工作器14被實(shí)例化。在其他示例中,來(lái)自web應(yīng)用15A、15B中的一個(gè)或多個(gè)的對(duì)子組件18實(shí)例的請(qǐng)求可以自動(dòng)導(dǎo)致共享工作器14的實(shí)例化,其然后可以如上所述獲得定義子組件18的軟件代碼用于實(shí)例化。圖5是圖示與本公開(kāi)的技術(shù)一致的使得能夠本地同步子組件狀態(tài)的共享工作器應(yīng)用14的概念圖。如圖5中所示,包括子組件18的第一實(shí)例18A的第一 web應(yīng)用15A正在瀏覽器12中運(yùn)作。同樣如圖5中所示,包括子組件18的第二實(shí)例18B的第二 web應(yīng)用15B正在瀏覽器12中運(yùn)作。第一 web應(yīng)用15A可以是與web應(yīng)用15B相同的web應(yīng)用的第二實(shí)例(例如,指向相同URL的瀏覽器12的獨(dú)立窗口或標(biāo)簽)。第一 web應(yīng)用15A替代地可以是與第二 web應(yīng)用15B不同的web應(yīng)用。在一個(gè)示例中,子組件實(shí)例18A可以接收狀態(tài)更新。狀態(tài)更新可以由用戶或另外(例如,由web應(yīng)用15A)發(fā)起。在一個(gè)示例中,在子組件18是聊天窗口的情況下,對(duì)子組件實(shí)例18A的狀態(tài)更新可以指示用戶已將文本輸入到聊天窗口中。在另一個(gè)示例中,在子組件18是聯(lián)系人采集器的情況下,對(duì)子組件實(shí)例18A的狀態(tài)更新可以指示用戶已輸入或選擇了新的聯(lián)系人。如圖5中所示,子組件實(shí)例18A (或web應(yīng)用15A)可以將該狀態(tài)更新傳送給共享工作器14。在一個(gè)示例中,共享工作器14然后可以將該狀態(tài)更新傳送給第二子組件實(shí)例ISB0第二子組件18B然后可以基于所接收的狀態(tài)更新來(lái)更新其狀態(tài)。例如,在子組件18是聊天窗口的情況下,第二子組件實(shí)例可以在第二子組件實(shí)例18B中反映(例如,通過(guò)第一子組件實(shí)例18A輸入的)用戶輸入的文本。在另一個(gè)示例中,當(dāng)子組件18是聯(lián)系人采集器的情況下,第二子組件實(shí)例18B可以反映通過(guò)子組件實(shí)例18A用戶對(duì)新的聯(lián)系人的輸入或用戶對(duì)聯(lián)系人的選擇。在另一個(gè)示例中,響應(yīng)于從子組件18A接收的狀態(tài)更新,共享工作器14可以對(duì)定義子組件18的軟件代碼進(jìn)行更新來(lái)合并有該狀態(tài)更新。例如,共享工作器14可以訪問(wèn)原來(lái)用于創(chuàng)建子組件實(shí)例18A和18B的軟件代碼來(lái)合并有該狀態(tài)更新。原來(lái)用于創(chuàng)建子組件實(shí)例18A、18B的軟件代碼可能已被存儲(chǔ)在本地存儲(chǔ)器中。在一個(gè)示例中,在子組件18是聊天窗口的情況下,共享工作器14可以更新定義聊天窗口的視覺(jué)描繪的軟件代碼來(lái)反映狀態(tài)更新(例如,輸入的用戶消息)。共享工作器14然后可以向web應(yīng)用15A和15B中的一個(gè)或多個(gè)重新發(fā)送更新的軟件代碼。然后,可以執(zhí)行更新的軟件代碼,使得對(duì)子組件實(shí)例18A、18B進(jìn)行更新來(lái)反映狀態(tài)更新(例如,新的消息)。子組件實(shí)例18A可以基于在創(chuàng)建子組件實(shí)例18A時(shí)所識(shí)別的命令來(lái)將狀態(tài)更新傳送給共享工作器14。在其中根據(jù)HTML5規(guī)范定義共享工作器14的一個(gè)特定示例中,子組件實(shí)例18A可以調(diào)用當(dāng)事件更新(例如,子組件實(shí)例狀態(tài)改變)發(fā)生時(shí)調(diào)用的函數(shù),notifyOfEvent (componentID, eventMessage)函數(shù),來(lái)將狀態(tài)更新傳送給共享工作器14。同樣如圖5中所示,共享工作器14可以訪問(wèn)本地存儲(chǔ)器(例如,圖3中的本地存儲(chǔ)器25)來(lái)存儲(chǔ)數(shù)據(jù)。因此,當(dāng)共享工作器14接收子組件18A、18B中的一個(gè)或多個(gè)的狀態(tài)更新時(shí),共享工作器14可以將該狀態(tài)更新存儲(chǔ)在本地存儲(chǔ)器26中。共享工作器14可以利用已存儲(chǔ)的狀態(tài)更新來(lái)更新子組件18的其他實(shí)例(圖4A中未示出)。在其他示例中,共享工作器14可以對(duì)定義子組件18的軟件代碼進(jìn)行更新來(lái)反映狀態(tài)更新。根據(jù)這些示例,可以將更新的代碼存儲(chǔ)在本地存儲(chǔ)器26中以供稍后使用。在一個(gè)示例中,如果用戶打開(kāi)期望使用與子組件18相關(guān)聯(lián)的功能的第三web應(yīng)用,則共享工作器14可以使用已存儲(chǔ)的狀態(tài)更新和/或更新的軟件代碼來(lái)創(chuàng)建子組件18的第三實(shí)例(圖5中未示出)。如此,子組件18的第三實(shí)例可以在被創(chuàng)建時(shí)反映與子組件18的先前活動(dòng)實(shí)例18A和18B相同的信息。圖6是圖示與本公開(kāi)一致的共享工作器應(yīng)用14的組件的框圖。如圖6中所示,共享工作器14包括web應(yīng)用通信模塊40 (在下文中,web應(yīng)用模塊40)、服務(wù)器通信模塊42(在下文中,服務(wù)器模塊42)以及存儲(chǔ)器訪問(wèn)模塊44。Web應(yīng)用模塊40 —般可以被配置成與一個(gè)或多個(gè)web應(yīng)用30A-30C通信。例如,web應(yīng)用模塊40可以從web應(yīng)用30A-30C中的一個(gè)或多個(gè)接收對(duì)信息的請(qǐng)求(和/或創(chuàng)建一個(gè)或多個(gè)子組件實(shí)例的請(qǐng)求),并且響應(yīng)于請(qǐng)求,與服務(wù)器模塊42通信來(lái)通過(guò)網(wǎng)絡(luò)2從一個(gè)或多個(gè)網(wǎng)絡(luò)服務(wù)器16A-16C獲得所請(qǐng)求的信息(例如,定義子組件的軟件代碼)。同樣響應(yīng)于該請(qǐng)求,存儲(chǔ)器訪問(wèn)模塊44可以將所獲得的信息存儲(chǔ)在本地存儲(chǔ)器25中以供稍后使用,諸如在第二 web應(yīng)用請(qǐng)求可以通過(guò)存儲(chǔ)在本地存儲(chǔ)器中的信息滿足的相同或相似信息的情況下。在另一個(gè)示例中,web應(yīng)用模塊40可以與存儲(chǔ)器訪問(wèn)模塊44通信以滿足對(duì)信息的請(qǐng)求。響應(yīng)于請(qǐng)求,存儲(chǔ)器訪問(wèn)模塊44可以確定存儲(chǔ)在本地存儲(chǔ)器25中的信息是否可以滿足該請(qǐng)求。如果可以滿足該請(qǐng)求,則共享工作器14可以訪問(wèn)存儲(chǔ)在本地存儲(chǔ)器25中的信息并且將該信息提供給一個(gè)或多個(gè)發(fā)出請(qǐng)求的web應(yīng)用30A-30C。同樣如圖5中所示,在另一個(gè)示例中,存儲(chǔ)器訪問(wèn)模塊24可以被進(jìn)一步配置成訪問(wèn)計(jì)算設(shè)備的本地?cái)?shù)據(jù)存儲(chǔ)24。根據(jù)該示例,可以將所獲得的信息存儲(chǔ)在本地?cái)?shù)據(jù)存儲(chǔ)24中,以使當(dāng)瀏覽器12和/或?yàn)g覽器12正在其上運(yùn)作的計(jì)算設(shè)備停止運(yùn)作時(shí),已存儲(chǔ)的信息仍然可以被訪問(wèn),而不用從一個(gè)或多個(gè)網(wǎng)絡(luò)服務(wù)器16A-16C獲得。Web應(yīng)用模塊40可以進(jìn)一步與一個(gè)或多個(gè)web應(yīng)用30A-30C通信來(lái)接收創(chuàng)建子組件18的實(shí)例的請(qǐng)求。在一個(gè)示例中,響應(yīng)于這樣的請(qǐng)求,web應(yīng)用模塊40可以與服務(wù)器通信模塊42通信來(lái)從一個(gè)或多個(gè)網(wǎng)絡(luò)服務(wù)器16A-16C獲得定義子組件18的至少一個(gè)軟件代碼部分。Web應(yīng)用模塊40然后可以將該至少一個(gè)軟件代碼部分傳送給發(fā)出請(qǐng)求的web應(yīng)用30A-30C??梢詧?zhí)行該軟件代碼部分,從而創(chuàng)建子組件18的實(shí)例ISA0在另一個(gè)示例中,web應(yīng)用模塊40可以替代地與存儲(chǔ)器訪問(wèn)模塊44通信來(lái)獲得該至少一個(gè)軟件代碼部分。例如,存儲(chǔ)器訪問(wèn)模塊44可以確定定義所請(qǐng)求的子組件18的一個(gè)或多個(gè)代碼段是否被存儲(chǔ)在本地存儲(chǔ)器中,并且如果該一個(gè)或多個(gè)代碼段被存儲(chǔ)在本地存儲(chǔ)器中,則將該一個(gè)或多個(gè)代碼段傳送給發(fā)出請(qǐng)求的web應(yīng)用30A-30C以供執(zhí)行,從而創(chuàng)建子組件18的實(shí)例ISA0然而,如果該一個(gè)或多個(gè)代碼段沒(méi)有被存儲(chǔ)在本地存儲(chǔ)器中,則web應(yīng)用模塊40可以如上所述與服務(wù)器模塊42通信來(lái)獲得該一個(gè)或多個(gè)代碼段。同樣在圖6中所示,web應(yīng)用模塊40可以包括狀態(tài)同步模塊46。狀態(tài)同步模塊46可以操作來(lái)使得能夠通過(guò)共享工作器14在多個(gè)子組件實(shí)例18A-18C之間本地同步狀態(tài)。多個(gè)子組件實(shí)例18A-18C可以在不同web應(yīng)用中實(shí)例化(例如,第一子組件實(shí)例用于web應(yīng)用30A以及第二子組件實(shí)例用于web應(yīng)用30B)、或多個(gè)子組件實(shí)例可以在單個(gè)web應(yīng)用(例如,web應(yīng)用30A)中實(shí)例化。為了同步子組件18狀態(tài),狀態(tài)同步模塊46可以從web應(yīng)用30A-30C的一個(gè)或多個(gè)子組件實(shí)例18A-18C接收子組件18狀態(tài)的指示。在一個(gè)示例中,狀態(tài)同步模塊46可以對(duì)所接收的子組件18狀態(tài)的指示進(jìn)行分析來(lái)確定部分或全部子組件實(shí)例18A-18C是否應(yīng)當(dāng)由于狀態(tài)更新而被更新。根據(jù)該示例,狀態(tài)同步模塊46可以通過(guò)存儲(chǔ)器訪問(wèn)模塊44或服務(wù)器模塊42獲得定義子組件18的軟件代碼。狀態(tài)同步模塊46然后可以與所接收的狀態(tài)更新一致地更新定義子組件18的軟件代碼,并且將更新的軟件代碼傳送給一個(gè)或多個(gè)web應(yīng)用30A-30C。然后,可以執(zhí)行更新的軟件代碼來(lái)更新子組件實(shí)例18A-18C。狀態(tài)同步模塊46可以進(jìn)一步與存儲(chǔ)器訪問(wèn)模塊44通信來(lái)存儲(chǔ)更新的軟件代碼以供稍后使用。圖7是圖示與本公開(kāi)的技術(shù)一致的方法的一個(gè)示例的流程圖。該方法包括從在計(jì)算設(shè)備上運(yùn)作的web應(yīng)用15A接收對(duì)子組件18的實(shí)例的請(qǐng)求(71)。該方法進(jìn)一步包括獲得定義子組件18的至少一個(gè)軟件代碼部分(72)。在一個(gè)示例中,該方法包括從一個(gè)或多個(gè)網(wǎng)絡(luò)服務(wù)器16A-16C獲得該至少一個(gè)軟件代碼部分。在另一個(gè)示例中,該方法包括從計(jì)算設(shè)備10的本地存儲(chǔ)器25獲得該至少一個(gè)軟件代碼部分。在另一個(gè)示例中,該方法可以進(jìn)一步包括確定將滿足該請(qǐng)求的至少一個(gè)軟件代碼部分是否被存儲(chǔ)在計(jì)算設(shè)備的本地存儲(chǔ)器25中,以及如果本地存儲(chǔ)器25不包括將滿足該請(qǐng)求的至少一個(gè)軟件代碼部分,則從一個(gè)或多個(gè)網(wǎng)絡(luò)服務(wù)器16A-16C獲得該至少一個(gè)軟件代碼部分。該方法進(jìn)一步包括響應(yīng)于該請(qǐng)求向web應(yīng)用15A傳送該至少一個(gè)軟件代碼部分以創(chuàng)建子組件18的實(shí)例18A (73)。在一個(gè)示例中,該至少一個(gè)軟件代碼部分對(duì)計(jì)算設(shè)備10本地通信來(lái)創(chuàng)建子組件18的實(shí)例ISA0圖8是圖示與本公開(kāi)的技術(shù)一致的方法的一個(gè)示例的流程圖。該方法包括在計(jì)算設(shè)備上運(yùn)作的瀏覽器中,實(shí)例化被配置成響應(yīng)于來(lái)自在該瀏覽器中運(yùn)作的一個(gè)或多個(gè)web應(yīng)用的至少一個(gè)請(qǐng)求而獲得網(wǎng)絡(luò)可訪問(wèn)的信息的共享工作器應(yīng)用(81)。該方法進(jìn)一步包括:通過(guò)共享工作器14接收對(duì)子組件18的狀態(tài)更新的至少一個(gè)指示,其中子組件的至少一個(gè)實(shí)例正在瀏覽器中運(yùn)作(82)??梢詮淖咏M件的實(shí)例18A、從子組件18的另一個(gè)實(shí)例18B或從主機(jī)web應(yīng)用15A接收對(duì)子組件18的狀態(tài)更新的至少一個(gè)指示。子組件18的實(shí)例18A如上所述可能已由共享工作器14創(chuàng)建。該方法進(jìn)一步包括對(duì)計(jì)算設(shè)備是本地地并且通過(guò)共享工作器響應(yīng)于狀態(tài)更新的至少一個(gè)指示,更新子組件的至少一個(gè)實(shí)例18A(83)。在一個(gè)示例中,更新子組件的至少一個(gè)實(shí)例18A、18B包括傳送被更新成反映狀態(tài)更新的至少一個(gè)指示的至少一個(gè)軟件代碼部分。在另一個(gè)示例中,可以重復(fù)步驟82和83。例如,如果共享工作器14接收對(duì)子組件18的狀態(tài)更新的第二指示,則共享工作器可以響應(yīng)于狀態(tài)更新的第二指示,更新子組件的至少一個(gè)實(shí)例18A。圖9是圖示根據(jù)本公開(kāi)的技術(shù)的被配置成實(shí)例化一個(gè)或多個(gè)子組件18和/或使得能夠與一個(gè)或多個(gè)子組件18的實(shí)例通信/在一個(gè)或多個(gè)子組件18的實(shí)例之間通信的共享工作器應(yīng)用的一個(gè)示例的框圖。上述共享工作器14的示例針對(duì)被配置成在同一 web域上運(yùn)作的共享工作器14和web應(yīng)用15A-15B (30A-30C)。如在此所述的域可以被描述為URI在第一斜杠之前的部分(例如,對(duì)于URI www.google, com/contacts,域是www.google,com)o出于安全目的,已知web瀏覽器12限制在不同域上運(yùn)作的web應(yīng)用之間的通信。如圖9中所描繪,本公開(kāi)的技術(shù)可以適用于跨域以及如上所述的域內(nèi)。如圖9中所示,web應(yīng)用90正在瀏覽器12中運(yùn)作。Web應(yīng)用90與第一域即域A相關(guān)聯(lián)。共享工作器94與第二域即域B相關(guān)聯(lián)。Web應(yīng)用90可能期望子組件98為web應(yīng)用90被實(shí)例化。然而,與上述示例不同,子組件98可能與不同于域A的第二域即域B相關(guān)聯(lián)。由于瀏覽器12的安全需求,可能阻止web應(yīng)用90與域B的web應(yīng)用,包括共享工作器94通信。如此,為了發(fā)起跨域通信,web應(yīng)用90可以促使子web應(yīng)用92被創(chuàng)建。在一個(gè)示例中,子web應(yīng)用92與域A相關(guān)聯(lián),然后與域B相關(guān)聯(lián)地被創(chuàng)建。在另一個(gè)示例中,子web應(yīng)用92與域B相關(guān)聯(lián)地被創(chuàng)建。在一個(gè)示例中,子web應(yīng)用92是在相關(guān)領(lǐng)域眾所周知的內(nèi)嵌框架web應(yīng)用(“iframe”)。子web應(yīng)用92可以運(yùn)作為用于在web應(yīng)用90和與域B相關(guān)聯(lián)的共享工作器94和/或其他web應(yīng)用之間的通信的代理。最初,子web應(yīng)用92可以阻止來(lái)自web應(yīng)用90的任何通信。子web應(yīng)用92可以在允許與web應(yīng)用90的跨域通信之前,首先安全驗(yàn)證與域A相關(guān)聯(lián)的web應(yīng)用90。子web應(yīng)用92可以通過(guò)本領(lǐng)域已知的各種機(jī)制,包括安全令牌交換和/或白名單比較,來(lái)安全驗(yàn)證與域A相關(guān)聯(lián)的web應(yīng)用90。一旦經(jīng)過(guò)安全驗(yàn)證,子web應(yīng)用92可以保持活動(dòng)以運(yùn)作為用于跨域通信的代理。在一個(gè)示例中,web應(yīng)用90可能期望使用與域B相關(guān)聯(lián)的子組件的功能。如此,web應(yīng)用90可以如上所述傳送對(duì)創(chuàng)建子組件98的實(shí)例98A的請(qǐng)求。子組件98可以是被配置成為多于一個(gè)web應(yīng)用提供web功能的組件。子web應(yīng)用92可以接收該請(qǐng)求,并且確定共享工作器94是否正與域B相關(guān)聯(lián)地運(yùn)作。如果共享工作器94沒(méi)有正與域B相關(guān)聯(lián)地運(yùn)作,則子web應(yīng)用92可以促使共享工作器94被實(shí)例化。子web應(yīng)用92可以將對(duì)實(shí)例化子組件98的請(qǐng)求轉(zhuǎn)送給共享工作器應(yīng)用94。如上所述,共享工作器應(yīng)用94可能試圖確定定義所請(qǐng)求的子組件98的軟件代碼是否被存儲(chǔ)在瀏覽器12正在其上運(yùn)作的計(jì)算設(shè)備的本地存儲(chǔ)器中。如果定義所請(qǐng)求的子組件98的軟件代碼被存儲(chǔ)在計(jì)算設(shè)備的本地存儲(chǔ)器中,則共享工作器94可以通過(guò)子web應(yīng)用92將該軟件代碼傳送給web應(yīng)用90以創(chuàng)建子組件實(shí)例98A。如果定義子組件98的軟件代碼沒(méi)有被存儲(chǔ)在本地存儲(chǔ)器中,則共享工作器94可以通過(guò)網(wǎng)絡(luò)與一個(gè)或多個(gè)網(wǎng)絡(luò)服務(wù)器通信來(lái)獲得該軟件代碼。一旦被獲得,共享工作器94就可以通過(guò)子web應(yīng)用92將該軟件代碼傳送給web應(yīng)用90以創(chuàng)建子組件實(shí)例98A。共享工作器94可以進(jìn)一步將所獲得的定義子組件98的軟件代碼存儲(chǔ)在本地存儲(chǔ)器中,以供稍后使用。在圖9中未描繪的另一個(gè)示例中,共享工作器94可以使得能夠在與域A相關(guān)聯(lián)的子組件98的實(shí)例98A和與域B相關(guān)聯(lián)的子組件98的另一個(gè)實(shí)例(圖9中未示出)之間進(jìn)行狀態(tài)同步。例如,如果與子組件實(shí)例98相關(guān)聯(lián)的子組件98的第二實(shí)例正與域B相關(guān)聯(lián)地運(yùn)作,則共享工作器應(yīng)用94可以響應(yīng)于通過(guò)子web應(yīng)用92從子組件實(shí)例98A接收的狀態(tài)更新,更新定義子組件的軟件代碼。共享工作器94然后可以將更新的軟件代碼傳送給子組件實(shí)例98A和/或與域B相關(guān)聯(lián)的第二子組件實(shí)例。因此,可以對(duì)瀏覽器12正在其上運(yùn)作的計(jì)算設(shè)備本地地,同步子組件實(shí)例98和與域B相關(guān)聯(lián)的第二子組件實(shí)例的狀態(tài)。在上面參考圖9描述的示例可以是有利的,因?yàn)槔每缬蛲ㄐ艁?lái)實(shí)例化子組件(例如,子組件98)和/或使得能夠在子組件之間進(jìn)行本地狀態(tài)同步,可以更大減少由web瀏覽器的已知實(shí)現(xiàn)關(guān)于子組件共享引起的上述缺陷,因?yàn)檫M(jìn)一步最小化了對(duì)網(wǎng)絡(luò)通信的需求。圖10是圖示與本公開(kāi)的技術(shù)一致的方法的一個(gè)示例的流程圖。該方法包括通過(guò)在計(jì)算設(shè)備10上執(zhí)行的瀏覽器12執(zhí)行被配置成向計(jì)算設(shè)備所渲染的用戶接口(UI)元件38A、38B提供更新的共享工作器應(yīng)用34 (1001)。該方法進(jìn)一步包括通過(guò)瀏覽器12執(zhí)行被配置成展現(xiàn)第一 UI元件38A的視覺(jué)渲染的第一 web應(yīng)用35A (1002)。該方法進(jìn)一步包括通過(guò)瀏覽器12執(zhí)行被配置成展現(xiàn)第二 Π元件38B的視覺(jué)渲染的第二 web應(yīng)用35B,其中第
二UI元件38B基本上類(lèi)似于第一 UI元件38A( 1003)。該方法進(jìn)一步包括通過(guò)共享工作器應(yīng)用34并且從第一 UI元件38A接收對(duì)第一 UI元件38A的狀態(tài)更新,其中該狀態(tài)更新包括對(duì)待由第一 Π元件38A提供的視覺(jué)內(nèi)容的更新。該方法進(jìn)一步包括通過(guò)共享工作器應(yīng)用34對(duì)第一 UI元件38A和第二 UI元件38B的視覺(jué)渲染進(jìn)行更新以反映所接收的狀態(tài)更新。圖11是圖示與本公開(kāi)的技術(shù)一致的方法的一個(gè)示例的流程圖。該方法包括通過(guò)在計(jì)算設(shè)備10上執(zhí)行的瀏覽器12執(zhí)行主機(jī)web應(yīng)用35A(1101)。該方法進(jìn)一步包括通過(guò)瀏覽器12執(zhí)行被配置成向在計(jì)算設(shè)備上執(zhí)行的至少一個(gè)主機(jī)web應(yīng)用提供至少一個(gè)用戶接口(UI)元件的共享工作器34 (1102)。該方法進(jìn)一步包括從主機(jī)web應(yīng)用35A并且通過(guò)共享工作器34接收對(duì)創(chuàng)建展現(xiàn)與主機(jī)web應(yīng)用35A相關(guān)聯(lián)的UI元件38A的功能的視覺(jué)描繪的用戶接口(UI)元件38A的視覺(jué)渲染的請(qǐng)求(1103)。該方法進(jìn)一步包括通過(guò)共享工作器34獲得可執(zhí)行來(lái)展現(xiàn)UI元件35A的視覺(jué)渲染的軟件(1104)。該方法進(jìn)一步包括通過(guò)共享工作器34將所獲得的軟件存儲(chǔ)在計(jì)算設(shè)備10的存儲(chǔ)器中(1105)。該方法進(jìn)一步包括響應(yīng)于該請(qǐng)求而執(zhí)行所獲得的軟件來(lái)創(chuàng)建與主機(jī)web應(yīng)用25A協(xié)同展現(xiàn)的UI元件38A的視覺(jué)渲染(1106)。可以至少部分以硬件、軟件、固件或其任何組合來(lái)實(shí)現(xiàn)在本公開(kāi)中所述的技術(shù)。例如,可以在一個(gè)或多個(gè)處理器,包括一個(gè)或多個(gè)微處理器、數(shù)字信號(hào)處理器(DSP)、專(zhuān)用集成電路(ASIC)、現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)或任何其他等價(jià)集成或分立邏輯電路以及這樣的組件的任何組合內(nèi)實(shí)現(xiàn)所述技術(shù)的各個(gè)方面。詞語(yǔ)“處理器”或“處理電路” 一般可以指單獨(dú)或結(jié)合其他邏輯電路的任何前述邏輯電路、或任何其他等價(jià)電路。包括硬件的控制單元也可以執(zhí)行本公開(kāi)的技術(shù)中的一個(gè)或多個(gè)??梢栽谕辉O(shè)備或單獨(dú)設(shè)備內(nèi)實(shí)現(xiàn)這樣的硬件、軟件和固件來(lái)支持在本公開(kāi)中描述的各種技術(shù)。另外,任何所述單元、模塊或組件可以在一起實(shí)現(xiàn)或分別被實(shí)現(xiàn)為分立但是可共同操作的邏輯器件。將不同特征描述為模塊或單元意在強(qiáng)調(diào)不同功能方面,并且并不一定暗指這樣的模塊或單元必須由單獨(dú)的硬件、固件或軟件組件實(shí)現(xiàn)。相反,與一個(gè)或多個(gè)模塊或單元相關(guān)聯(lián)的功能可以由單獨(dú)的硬件、固件或軟件組件執(zhí)行、或被集成在共同或單獨(dú)的硬件、固件或軟件組件內(nèi)。還可以將在本公開(kāi)中所述的技術(shù)具體化或編碼在包含指令的計(jì)算機(jī)可讀介質(zhì)中,諸如計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。嵌入或編碼在計(jì)算機(jī)可讀介質(zhì),包括計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中的指令可以促使一個(gè)或多個(gè)可編程處理器或其他處理器實(shí)現(xiàn)在此所述的技術(shù)中的一個(gè)或多個(gè),諸如當(dāng)包括或編碼在計(jì)算機(jī)可讀介質(zhì)中的指令被該一個(gè)或多個(gè)處理器執(zhí)行時(shí)。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可以包括隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、可編程只讀存儲(chǔ)器(PR0M)、可擦可編程只讀存儲(chǔ)器(EPR0M)、電可擦可編程只讀存儲(chǔ)器(EEPROM),閃存、硬盤(pán)、光盤(pán)ROM (CD-ROM)、軟盤(pán)、帶盒、磁介質(zhì)、光介質(zhì)或其他計(jì)算機(jī)可讀介質(zhì)。在一些示例中,制品可以包括一個(gè)或多個(gè)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。已描述了本公開(kāi)的各種實(shí)施例。這些和其他實(shí)施例在所附權(quán)利要求的范圍內(nèi)。
權(quán)利要求
1.一種用于向視覺(jué)用戶接口元件提供更新的方法,所述方法包括: 通過(guò)在計(jì)算設(shè)備上執(zhí)行的瀏覽器執(zhí)行被配置成向所述計(jì)算設(shè)備所渲染的用戶接口(UI)元件提供更新的共享工作器應(yīng)用; 通過(guò)所述瀏覽器執(zhí)行被配置成展現(xiàn)第一 UI元件的視覺(jué)渲染的第一 web應(yīng)用; 通過(guò)所述瀏覽器執(zhí)行被配置成展現(xiàn)第二 Π元件的視覺(jué)渲染的第二 web應(yīng)用,其中所述第二 UI元件基本上類(lèi)似于所述第一 UI元件; 通過(guò)所述共享工作器應(yīng)用并且從所述第一 UI元件接收對(duì)所述第一 UI元件的狀態(tài)更新,其中所述狀態(tài)更新包括對(duì)待由所述第一 Π元件提供的視覺(jué)內(nèi)容的更新;以及 通過(guò)所述共享工作器應(yīng)用對(duì)所述第一 UI元件和所述第二 UI元件的所述視覺(jué)渲染進(jìn)行更新以反映所接收的狀態(tài)更新。
2.根據(jù)權(quán)利要求1所述的方法,其中對(duì)所述第一UI元件和所述第二 UI元件的所述視覺(jué)渲染進(jìn)行更新以反映所接收的狀態(tài)更新包括: 通過(guò)所述共享工作器應(yīng)用獲得可執(zhí)行來(lái)定義至少所述第一 Π元件的所述視覺(jué)渲染的軟件; 對(duì)所述軟件進(jìn)行修改以反映所接收的狀態(tài)更新; 執(zhí)行所述軟件以更新所述第一 UI元件的所述視覺(jué)渲染;以及 執(zhí)行所述軟件以更新所述第二 UI元件的所述視覺(jué)渲染。
3.根據(jù)權(quán)利要求2所述的方法,其中獲得可執(zhí)行來(lái)定義至少所述第一Π元件的所述視覺(jué)渲染的所述軟件包括: 從所述計(jì)算設(shè)備的存儲(chǔ)器獲得所述軟件。
4.根據(jù)權(quán)利要求2所述的方法,其中獲得可執(zhí)行來(lái)定義至少所述第一Π元件的所述視覺(jué)渲染的所述軟件包括: 通過(guò)網(wǎng)絡(luò)連接從網(wǎng)絡(luò)服務(wù)器獲得所述軟件。
5.根據(jù)權(quán)利要求2所述的方法,進(jìn)一步包括: 將被修改成反映所接收的狀態(tài)更新的所述軟件存儲(chǔ)在所述計(jì)算設(shè)備的本地存儲(chǔ)器中。
6.根據(jù)權(quán)利要求5所述的方法,進(jìn)一步包括: 通過(guò)所述共享工作器接收創(chuàng)建基本上類(lèi)似于所述第一和第二 Π元件的第三Π元件的請(qǐng)求;以及 通過(guò)所述共享工作器執(zhí)行被修改成反映所接收的狀態(tài)更新的所存儲(chǔ)的軟件來(lái)創(chuàng)建所述第三Π元件以反映所接收的狀態(tài)更新。
7.根據(jù)權(quán)利要求1所述的方法,其中所述第一UI元件表示所述第一 web應(yīng)用的功能,以及其中所述第一 web應(yīng)用的所述功能從由以下組成的組中來(lái)選擇: 即時(shí)消息窗口; 聯(lián)系人采集器; 日歷事件輸入/更新窗口; 照片上載和/或展現(xiàn)窗口 ;以及 音頻/視頻展現(xiàn)/播放器窗口。
8.—種包括存儲(chǔ)指令的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的制品,所述指令促使計(jì)算設(shè)備: 通過(guò)在計(jì)算設(shè)備上執(zhí)行的瀏覽器執(zhí)行被配置成向所述計(jì)算設(shè)備所渲染的用戶接口(UI)元件提供更新的共享工作器應(yīng)用; 通過(guò)所述瀏覽器執(zhí)行被配置成展現(xiàn)第一 UI元件的視覺(jué)渲染的第一 web應(yīng)用; 通過(guò)所述瀏覽器執(zhí)行被配置成展現(xiàn)第二 Π元件的視覺(jué)渲染的第二 web應(yīng)用,其中所述第二 UI元件基本上類(lèi)似于所述第一 UI元件; 通過(guò)所述共享工作器應(yīng)用并且從所述第一 UI元件接收對(duì)所述第一 UI元件的狀態(tài)更新,其中所述狀態(tài)更新包括對(duì)待由所述第一 Π元件提供的視覺(jué)內(nèi)容的更新;以及 通過(guò)所述共享工作器應(yīng)用對(duì)所述第一 UI元件和所述第二 UI元件的所述視覺(jué)渲染進(jìn)行更新以反映所接收的狀態(tài)更新。
9.根據(jù)權(quán)利要求8所述的制品,其中所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)進(jìn)一步存儲(chǔ)指令,所述指令促使所述計(jì)算設(shè)備: 通過(guò)所述共享工作器應(yīng)用獲得可執(zhí)行來(lái)定義至少所述第一 Π元件的所述視覺(jué)渲染的軟件; 對(duì)所述軟件進(jìn)行修改以反映所接收的狀態(tài)更新; 執(zhí)行所述軟件以更新所述第一 Π元件的所述視覺(jué)渲染;以及 執(zhí)行所述軟件以更新所述第二 Π元件的所述視覺(jué)渲染。
10.根據(jù)權(quán)利要求8所述的制品,其中所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)進(jìn)一步存儲(chǔ)指令,所述指令促使所述計(jì)算設(shè)備: 從所述計(jì)算設(shè)備的存儲(chǔ)器獲得所述軟件。
11.根據(jù)權(quán)利要求8所述的制品,其中所述指令進(jìn)一步促使所述計(jì)算設(shè)備: 通過(guò)網(wǎng)絡(luò)連接從網(wǎng)絡(luò)服務(wù)器獲得所述軟件。
12.根據(jù)權(quán)利要求8所述的制品,其中所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)進(jìn)一步存儲(chǔ)指令,所述指令促使所述計(jì)算設(shè)備: 將被修改成反映所接收的狀態(tài)更新的所述軟件存儲(chǔ)在所述計(jì)算設(shè)備的本地存儲(chǔ)器中。
13.根據(jù)權(quán)利要求12所述的制品,其中所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)進(jìn)一步存儲(chǔ)指令,所述指令促使所述計(jì)算設(shè)備: 通過(guò)所述共享工作器接收創(chuàng)建基本上類(lèi)似于所述第一和第二 Π元件的第三Π元件的請(qǐng)求;以及 通過(guò)所述共享工作器執(zhí)行被修改成反映所接收的狀態(tài)更新的所存儲(chǔ)的軟件來(lái)創(chuàng)建所述第三UI元件以反映所接收的狀態(tài)更新。
14.根據(jù)權(quán)利要求12所述的制品,其中所述第一UI元件表示所述第一 web應(yīng)用的功能,以及其中所述第一 web應(yīng)用的所述功能從由以下組成的組中來(lái)選擇: 即時(shí)消息窗口; 聯(lián)系人采集器; 日歷事件輸入/更新窗口; 照片上載和/或展現(xiàn)窗口 ;以及 音頻/視頻展現(xiàn)/播放器窗口。
15.一種設(shè)備,包括: 瀏覽器,其被配置成執(zhí)行被配置成向所述計(jì)算設(shè)備所渲染的用戶接口(UI)元件提供更新的共享工作器應(yīng)用,以及其中所述瀏覽器被進(jìn)一步配置成執(zhí)行被配置成展現(xiàn)第一 UI元件的視覺(jué)渲染的第一 web應(yīng)用和被配置成展現(xiàn)第二 Π元件的視覺(jué)渲染的第二 web應(yīng)用;用于從所述第一 Π元件并且通過(guò)所述共享工作器應(yīng)用接收對(duì)所述第一 Π元件的狀態(tài)更新的裝置,其中所述狀態(tài)更新包括對(duì)待由所述第一 Π元件提供的視覺(jué)內(nèi)容的更新;以及用于通過(guò)所述共享工作器應(yīng)用對(duì)所述第一 Π元件和所述第二 Π元件的所述視覺(jué)渲染進(jìn)行更新以反映所接收的狀態(tài)更新的裝置。
16.根據(jù)權(quán)利要求15所述的設(shè)備,進(jìn)一步包括: 用于獲得可執(zhí)行來(lái)定義至少所述第一 Π元件的所述視覺(jué)渲染的軟件的裝置; 用于對(duì)所述軟件進(jìn)行修改以反映所接收的狀態(tài)更新的裝置; 用于執(zhí)行所述軟件以更新所述第一 UI元件的所述視覺(jué)渲染的裝置;以及 用于執(zhí)行所述軟件以更新所述第二 UI元件的所述視覺(jué)渲染的裝置。
17.根據(jù)權(quán)利要求16所述的設(shè)備,其中用于獲得可執(zhí)行來(lái)定義至少所述第一Π元件的所述視覺(jué)渲染的軟件的裝置包括用于從所述計(jì)算設(shè)備的存儲(chǔ)器獲得所述軟件的裝置。
18.根據(jù)權(quán)利要求16所述的設(shè)備,其中用于獲得可執(zhí)行來(lái)定義至少所述第一Π元件的所述視覺(jué)渲染的軟件的裝置包括用于通過(guò)網(wǎng)絡(luò)連接從網(wǎng)絡(luò)服務(wù)器獲得所述軟件的裝置。
19.根據(jù)權(quán)利要求16所述的設(shè)備,進(jìn)一步包括: 用于將被修改成反映所接收的狀態(tài)更新的所述軟件存儲(chǔ)在所述計(jì)算設(shè)備的本地存儲(chǔ)器中的裝置。
20.根據(jù)權(quán)利要求19所述的設(shè)備,進(jìn)一步包括: 用于接收創(chuàng)建基本上類(lèi)似于所述第一和第二 Π元件的第三Π元件的請(qǐng)求的裝置;以及 用于執(zhí)行被修改成反映所接收的狀態(tài)更新的所存儲(chǔ)的軟件來(lái)創(chuàng)建所述第三UI元件以反映所接收的狀態(tài)更新的裝置。
21.一種用于通過(guò)web應(yīng)用展現(xiàn)視覺(jué)用戶接口元件的方法,所述方法包括: 通過(guò)在計(jì)算設(shè)備上執(zhí)行的瀏覽器執(zhí)行主機(jī)web應(yīng)用; 通過(guò)所述瀏覽器執(zhí)行被配置成向在所述計(jì)算設(shè)備上執(zhí)行的至少一個(gè)主機(jī)web應(yīng)用提供至少一個(gè)用戶接口(UI)元件的共享工作器; 從所述主機(jī)web應(yīng)用并且通過(guò)所述共享工作器接收對(duì)創(chuàng)建展現(xiàn)與所述主機(jī)web應(yīng)用相關(guān)聯(lián)的用戶接口(UI)元件的功能的視覺(jué)描繪的所述用戶接口(UI)元件的視覺(jué)渲染的請(qǐng)求; 通過(guò)所述共享工作器獲得可執(zhí)行來(lái)展現(xiàn)所述Π元件的所述視覺(jué)渲染的軟件; 通過(guò)所述共享工作器將所獲得的軟件存儲(chǔ)在所述計(jì)算設(shè)備的存儲(chǔ)器中;以及執(zhí)行所獲得的軟件來(lái)響應(yīng)于所述請(qǐng)求而創(chuàng)建與所述主機(jī)web應(yīng)用協(xié)同展現(xiàn)的所述UI元件的所述視覺(jué)渲染。
22.根據(jù)權(quán)利要求21所述的方法,其中所述Π元件是第一Π元件,以及其中所述方法進(jìn)一步包括: 通過(guò)所述共享工作器接收創(chuàng)建第二 Π元件的視覺(jué)渲染的第二請(qǐng)求;以及 執(zhí)行所獲得的軟件來(lái)響應(yīng)于所述第二請(qǐng)求而創(chuàng)建所述第二 UI元件的所述視覺(jué)渲染。
23.根據(jù)權(quán)利要求21所述的方法,其中獲 得可執(zhí)行來(lái)定義至少所述第一Π元件的所述視覺(jué)渲染的所述軟件包括:從所述計(jì)算設(shè)備的存儲(chǔ)器獲得所述軟件。
24.根據(jù)權(quán)利要求21所述的方法,其中獲得可執(zhí)行來(lái)定義至少所述第一Π元件的所述視覺(jué)渲染的所述軟件包括: 通過(guò)網(wǎng)絡(luò)連接從網(wǎng)絡(luò)服務(wù)器獲得所述軟件。
25.根據(jù)權(quán)利要求21所述的方法,其中與所述主機(jī)web應(yīng)用相關(guān)聯(lián)的所述Π元件的功能的所述視覺(jué)描繪從由以下組成的組中來(lái)選擇: 即時(shí)消息窗口; 聯(lián)系人采集器; 日歷事件輸入/更新窗口; 照片上載和/或展現(xiàn)窗口 ;以及 音頻/視頻展現(xiàn)/播放器窗口。
26.根據(jù)權(quán)利要求21所述的方法,其中將所獲得的軟件存儲(chǔ)在所述計(jì)算設(shè)備的存儲(chǔ)器中包括將所獲得的軟件存儲(chǔ)在所述計(jì)算設(shè)備的易失性存儲(chǔ)器中。
27.一種包括存儲(chǔ)指令的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的制品,所述指令促使計(jì)算設(shè)備: 通過(guò)在計(jì)算設(shè)備上執(zhí)行的瀏覽器執(zhí)行主機(jī)web應(yīng)用; 通過(guò)所述瀏覽器執(zhí)行被配置成向在所述計(jì)算設(shè)備上執(zhí)行的至少一個(gè)主機(jī)web應(yīng)用提供至少一個(gè)用戶接口(UI)元件的 共享工作器; 從所述主機(jī)web應(yīng)用并且通過(guò)所述共享工作器接收對(duì)創(chuàng)建展現(xiàn)與所述主機(jī)web應(yīng)用相關(guān)聯(lián)的用戶接口(UI)元件的功能的視覺(jué)描繪的所述用戶接口(UI)元件的視覺(jué)渲染的請(qǐng)求; 通過(guò)所述共享工作器獲得可執(zhí)行來(lái)展現(xiàn)所述Π元件的所述視覺(jué)渲染的軟件; 通過(guò)所述共享工作器將所獲得的軟件存儲(chǔ)在所述計(jì)算設(shè)備的存儲(chǔ)器中;以及執(zhí)行所獲得的軟件來(lái)響應(yīng)于所述請(qǐng)求而創(chuàng)建與所述主機(jī)web應(yīng)用協(xié)同展現(xiàn)的所述UI元件的所述視覺(jué)渲染。
28.根據(jù)權(quán)利要求21所述的制品,其中所述Π元件是第一Π元件,以及其中所述指令進(jìn)一步促使所述計(jì)算設(shè)備: 通過(guò)所述共享工作器接收創(chuàng)建第二 Π元件的視覺(jué)渲染的第二請(qǐng)求;以及 執(zhí)行所獲得的軟件來(lái)響應(yīng)于所述第二請(qǐng)求而創(chuàng)建所述第二 UI元件的所述視覺(jué)渲染。
29.根據(jù)權(quán)利要求21所述的制品,其中所述指令促使所述計(jì)算設(shè)備: 從所述計(jì)算設(shè)備的存儲(chǔ)器獲得所述軟件。
30.根據(jù)權(quán)利要求21所述的制品,其中所述指令促使所述計(jì)算設(shè)備: 通過(guò)網(wǎng)絡(luò)連接從網(wǎng)絡(luò)服務(wù)器獲得所述軟件。
31.根據(jù)權(quán)利要求21所述的制品,其中與所述主機(jī)web應(yīng)用相關(guān)聯(lián)的所述Π元件的功能的所述視覺(jué)描繪從由以下組成的組中來(lái)選擇: 即時(shí)消息窗口; 聯(lián)系人采集器; 日歷事件輸入/更新窗口; 照片上載和/或展現(xiàn)窗口 ;以及 音頻/視頻展現(xiàn)/播放器窗口。
32.根據(jù)權(quán)利要求21所述的制品,其中所述指令進(jìn)一步促使所述計(jì)算設(shè)備將所獲得的軟件存儲(chǔ)在所述計(jì)算設(shè)備的易失性存儲(chǔ)器中。
33.一種設(shè)備,包括: 由瀏覽器執(zhí)行的主機(jī)web應(yīng)用; 由所述瀏覽器執(zhí)行的共享工作器應(yīng)用,其中所述共享工作器應(yīng)用包括: 用于從所述主機(jī)web應(yīng)用接收對(duì)創(chuàng)建展現(xiàn)與所述主機(jī)web應(yīng)用相關(guān)聯(lián)的用戶接口(UI)元件的功能的視覺(jué)描繪的所述用戶接口(UI)元件的視覺(jué)渲染的請(qǐng)求的裝置; 用于獲得可執(zhí)行來(lái)展現(xiàn)所述Π元件的所述視覺(jué)渲染的軟件的裝置; 用于將所獲得的軟件存儲(chǔ)在所述計(jì)算設(shè)備的存儲(chǔ)器中的裝置;以及用于執(zhí)行所獲得的軟件來(lái)響應(yīng)于所述請(qǐng)求而創(chuàng)建與所述主機(jī)web應(yīng)用協(xié)同展現(xiàn)的所述Π元件的所述視覺(jué)渲染的裝置。
34.根據(jù)權(quán)利要求33所述的設(shè)備,其中所述Π元件是第一UI元件,以及其中所述共享工作器進(jìn)一步包括: 用于接收創(chuàng)建第二 UI元件的視覺(jué)渲染的第二請(qǐng)求的裝置;以及用于執(zhí)行所獲得的軟件來(lái)響應(yīng)于所 述第二請(qǐng)求而創(chuàng)建所述第二 UI元件的所述視覺(jué)渲染的裝置。
35.根據(jù)權(quán)利要求33所述的設(shè)備,其中用于獲得可執(zhí)行來(lái)展現(xiàn)所述Π元件的所述視覺(jué)渲染的軟件的所述裝置從所述計(jì)算設(shè)備的存儲(chǔ)器獲得所述軟件。
36.根據(jù)權(quán)利要求33所述的設(shè)備,其中用于獲得可執(zhí)行來(lái)展現(xiàn)所述Π元件的所述視覺(jué)渲染的軟件的所述裝置通過(guò)網(wǎng)絡(luò)連接從網(wǎng)絡(luò)服務(wù)器獲得所述軟件。
37.根據(jù)權(quán)利要求33所述的設(shè)備,其中與所述主機(jī)web應(yīng)用相關(guān)聯(lián)的所述Π元件的功能的所述視覺(jué)描繪從由以下組成的組中來(lái)選擇: 即時(shí)消息窗口; 聯(lián)系人采集器; 日歷事件輸入/更新窗口; 照片上載和/或展現(xiàn)窗口 ;以及 音頻/視頻展現(xiàn)/播放器窗口。
38.根據(jù)權(quán)利要求33所述的設(shè)備,用于將所獲得的軟件存儲(chǔ)在所述計(jì)算設(shè)備的存儲(chǔ)器中的所述裝置將所獲得的軟件存儲(chǔ)在所述計(jì)算設(shè)備的易失性存儲(chǔ)器中。
全文摘要
本公開(kāi)的技術(shù)針對(duì)被配置成為一個(gè)或多個(gè)web應(yīng)用創(chuàng)建一個(gè)或多個(gè)實(shí)例和/或本地同步一個(gè)或多個(gè)子組件實(shí)例的狀態(tài)的共享工作器應(yīng)用。在一個(gè)示例中,瀏覽器的共享工作器通過(guò)從瀏覽器正在其上運(yùn)作的計(jì)算設(shè)備的存儲(chǔ)器或通過(guò)網(wǎng)絡(luò)獲得定義子組件的軟件,并且提供對(duì)計(jì)算設(shè)備是本地的該軟件以供執(zhí)行來(lái)創(chuàng)建子組件的實(shí)例,來(lái)便于創(chuàng)建子組件實(shí)例。在另一個(gè)示例中,如上所述的瀏覽器的共享工作器便于對(duì)瀏覽器正在其上運(yùn)作的計(jì)算設(shè)備是本地的對(duì)多個(gè)子組件實(shí)例的狀態(tài)更新。
文檔編號(hào)G06F9/44GK103180822SQ201180049050
公開(kāi)日2013年6月26日 申請(qǐng)日期2011年7月28日 優(yōu)先權(quán)日2010年8月12日
發(fā)明者德雷克·菲利普斯, 安德魯·格里夫, 馬修·博洛漢, 羅伯特·克勒格爾 申請(qǐng)人:谷歌公司