专利名称:使用共享工作器的子组件实例和同步的制作方法
技术领域:
本公开涉及网络通信。更具体地,本公开涉及被配置成在耦接到网络的通信设备上的web浏览器中运作的web应用。
背景技术:
Web浏览器一般是在计算设备(例如,个人计算机、膝上型机、个人数字助理(PDA)、蜂窝电话、智能手机等)上运作来使通过网络(例如,因特网)可获得的信息能够被访问的应用(例如,计算机程序)。Web浏览器可以被配置成通过利用指示根据其可以访问信息的位置的统一资源标识符(URI)来访问在网络上可获得的信息。典型的web浏览器可以被配置成在一个或多个浏览器窗口或在浏览器内的浏览器标签中向用户展现网络可访问和/或其他信息。Web浏览器可以使用户能够同时打开多个web浏览器窗口或在web浏览器窗口内的标签。Web应用一般是通过如上所述的web浏览器可访问的软件应用。例如,web应用可以是文档,诸如超文本标记语言(HTML)文档。文档web应用可以被配置成向用户在视觉上展现在网络上可获得的信息。文档web应用可以向用户展现到可获得的信息(例如,到URI)的一个或多个链接。可以向用户提供选择一个或多个链接的能力,其可以导致新的web文档的展现,包括通过与链接相关联的URI可访问的信息。对web文档的一个或多个链接的用户选择可以替代或另外执行一个或多个非文档web应用来在浏览器内执行期望功能。一些web应用可以被配置成对一个或多个子组件进行操作。Web应用所操作的子组件可以为web应用执行期望任务。子组件可以向用户展现某一形式的视觉描绘,例如即时消息(例如,聊天)窗口、联系人采集器、日历事件输入/更新窗口、照片上载和/或展现子窗口、音频/视频展现/播放器窗口、或主要或主机web应用的任何其他形式的弹出或嵌入式子窗口。在其他示例中,主要或主机web应用可以对被配置成为web应用执行非视觉功能的一个或多个子组件进行操作。
发明内容
本公开针对用于使用共享工作器应用来为至少一个主机web应用创建一个或多个子组件实例或视觉用户接口(UI)元件的技术。本公开进一步针对用于使用共享工作器应用来使得能够(例如,在没有访问网络的情况下)进行对共享工作器和子组件实例正在其上运作的计算机设备是本地的对一个或多个子组件实例(Π元件)的状态的更新的技术。本公开的技术可以提供在创建子组件实例和/或更新子组件实例状态方面的改进,因为通过使用共享工作器,可以使访问网络以获得定义子组件(Π元件)的软件和/或传送子组件实例状态更新的需求最小化。进一步,定义子组件(Π元件)的软件可以不依赖于定义主机web应用的软件,其可以提供在为主机web应用和子组件中的一个或多个管理软件发布周期方面的改进。在一个示例中,在此描述了用于向视觉用户接口元件提供更新的方法。该方法包括通过在计算设备上执行的浏览器执行被配置成向计算设备所渲染的用户接口(UI)元件提供更新的共享工作器应用。该方法进一步包括通过浏览器执行被配置成展现第一 Π元件的视觉渲染的第一 Web应用。该方法进一步包括通过浏览器执行被配置成展现第二 UI元件的视觉渲染的第二 web应用,其中第二 Π元件基本上类似于第一 Π元件。该方法进一步包括通过共享工作器应用并且从第一 Π元件接收对第一 Π元件的状态更新,其中该状态更新包括对待由第一 Π元件提供的视觉内容的更新。该方法进一步包括通过共享工作器应用对第一 Π元件和第二 Π元件的视觉渲染进行更新以反映所接收的状态更新。在此还描述了包括存储指令的计算机可读存储介质的制品。所述指令促使计算设备通过在计算设备上执行的浏览器执行被配置成向计算设备所渲染的用户接口(UI)元件提供更新的共享工作器应用。所述指令进一步促使计算设备通过浏览器执行被配置成展现第一 UI元件的视觉渲染的第一 web应用。所述指令进一步促使计算设备通过浏览器执行被配置成展现第二 Π元件的视觉渲染的第二 web应用,其中第二 Π元件基本上类似于第-UI元件。通过共享工作器应用并且从第一 Π元件接收对第一 Π元件的状态更新,其中该状态更新包括对待由第一 Π元件提供的视觉内容的更新。所述指令进一步促使计算设备通过共享工作器应用对第一Π元件和第二Π元件的视觉渲染进行更新以反映所接收的状态更新。在此还描述了设备。该设备包括浏览器,其被配置成执行被配置成向计算设备所渲染的用户接口(UI)元件提供更新的共享工作器应用,以及其中浏览器被进一步配置成执行被配置成展现第一 UI元件的视觉渲染的第一 web应用和被配置成展现第二 UI元件的视觉渲染的第二 web应用。该设备进一步包括用于从第一 Π元件并且通过共享工作器应用接收对第一 UI元件的状态更新的装置,其中该状态更新包括对待由第一 UI元件提供的视觉内容的更新。该设备进一步包括用于通过共享工作器应用对第一 Π元件和第二 Π元件的视觉渲染进行更新以反映所接收的状态更新的装置。在此进一步描述了用于通过web应用展现视觉用户接口元件的方法。该方法包括通过在计算设备上执行的浏览器执行主机web应用。该方法进一步包括通过该浏览器执行被配置成向在计算设备上执行的至少一个主机web应用提供至少一个用户接口(UI)元件的共享工作器。该方法进一步包括从主机web应用并且通过共享工作器接收对创建展现与该主机web应用相关联的UI元件的功能的视觉描绘的用户接口(UI)元件的视觉渲染的请求。该方法进一步包括通过共享工作器获得可执行来展现Π元件的视觉渲染的软件。该方法进一步包括通过共享工作器将所获得的软件存储在计算设备的存储器中。该方法进一步包括响应于该请求而执行所获得的软件来创建与主机web应用协同展现的UI元件的视觉渲染。在此还描述了包括存储指令的计算机可读存储介质的制品。所述指令促使计算设备通过在计算设备上执行的浏览器执行主机Web应用。所述指令进一步促使计算设备通过浏览器执行被配置成向在计算设备上执行的至少一个主机web应用提供至少一个用户接口(UI)元件的共享工作器。所述指令进一步促使计算设备从主机web应用并且通过共享工作器接收对创建展现与该主机web应用相关联的UI元件的功能的视觉描绘的用户接口(UI)元件的视觉渲染的请求。所述指令进一步促使计算设备通过共享工作器获得可执行来展现Π元件的视觉渲染的软件。所述指令进一步促使计算设备通过共享工作器将所获得的软件存储在计算设备的存储器中。所述指令进一步促使计算设备响应于该请求而执行所获得的软件来创建与主机web应用协同展现的UI元件的视觉渲染。在附图和下面描述中阐述了本公开的一个或多个实施例的细节。本公开的其他特征、目的和优势从描述和附图以及从权利要求将是显而易见的。
图1A是图示与本公开的技术一致的计算设备和在该计算设备上执行的包括共享工作器应用的浏览器的一个示例的概念图。图1B是图示与本公开的技术一致的主机web应用和该主机web应用的子组件实例的一个示例的概念图。图2是图示与本公开的技术一致的计算设备和在该计算设备上执行的包括共享工作器应用以及第一和第二用户接口元件(UI)的浏览器的一个示例的概念图。图3是图示与本公开的技术一致的被配置成运作合并有共享工作器应用的web浏览器的计算硬件的各种示例的概念图。图4是图示与本公开的技术一致的运作使得能够实例化子组件和/或同步子组件状态的共享工作器应用的浏览器的一个示例的框图。图5是图示与本公开的技术一致的可操作来同步子组件实例的状态的共享工作器应用的一个示例的概念图。图6是图示与本公开的技术一致的可操作来使得能够对子组件进行同步和/或实例化的共享工作器应用的组件的一个示例的框图。图7是图示与本公开的技术一致的通过共享工作器应用来创建子组件实例的方法的一个示例的流程图。图8是图示与本公开的技术一致的更新子组件状态的方法的一个示例的流程图。图9是图示与本公开的技术一致的可操作来跨域实例化一个或多个子组件和/或更新一个或多个子组件实例的状态的共享工作器的一个示例的框图。图10是图示与本公开的技术一致的更新用户接口(UI)元件状态的方法的一个示例的流程图。图11是图示与本公开的技术一致的向主机web应用提供接口(UI)元件的方法的一个示例的流程图。
具体实施例方式图1A是图示与本公开一致的包括合并有共享工作器应用14的浏览器12的计算系统的一个示例的概念图。图1A描绘了本地计算设备10。本地计算设备10可以通过网络2被耦接到一个或多个其他计算设备。网络2可以是因特网。网络2替代地可以是任何其他网络,例如,公用/专用网络或无线网络。在图1中描绘的计算设备10是个人台式计算机。尽管图1A中未示出,然而,计算设备10可以是被配置成通过网络进行通信的任何计算设备,例如膝上型计算机、蜂窝电话、平板计算机、或被配置成通过网络2传送信息的任何其他设备,无论设备的主要目的是否是基于网络的通信。计算设备的另一个示例是被配置成通过网络2进行通信的电视。进一步,计算设备10可以通过用于网络通信的任何数量的已知机制,例如到网络2的有线连接(例如,以太网)或无线连接(例如,W1-F1、蜂窝),被耦接到网络2。如图1A中所描绘,计算设备10通过网络2被耦接到多个网络服务器计算设备16A-16E。为了访问从网络服务器16A-16E可访问的信息,浏览器应用12可以在本地计算设备10上运行。浏览器12可以被配置成在计算设备10的本地操作系统内运行。已知浏览器应用的非限制性不例包括 Microsoft Explorer 、Apple Safari 、Mozilla Firefox 和Google Chrome 浏览器。用于台式和/或膝上型计算机的已知操作系统的非限制性示例可以包括Microsoft Vista 、Apple Snow Leopard 或Linux。用于移动设备(例如,智能手机、上网本等)的已知操作系统的示例包括Microsoft Windows Mobile 、Apple Iphone OS 以及Google Android 移动技术平台。浏览器12可以使用户能够操纵对通过网络2可访问的信息的访问。例如,浏览器12可以向用户提供输入一个或多个统一资源指示符(URI,例如,www.google, com),以访问web应用,诸如超文本标记语言(HTML)文档的能力。Web应用和/或web应用所使用的信息可以被存储在一个或多个网络服务器16A-16E上。浏览器12可以被配置成访问存储在网络服务器16A-16E上的web应用和/或其他信息,以除其他用途外向计算设备10的用户展现视觉信息。如图1A中所示,浏览器12可以通过浏览器12的窗口或标签向用户展现一个或多个web应用15A-15B。在图1A的示例中仅示出了两个web应用15A-15B,然而,可以通过浏览器12向用户同时展现单个web应用或多于两个web应用。在一个示例中,web应用15A-15B中的一个或多个是被配置成向用户展现视觉描绘(例如,HTML文档)的web应用。Web应用15A-15B中的一个或多个可以进一步向用户展现功能,例如,使用户能够进行通信、导航到其他web应用、查看地图、查看日历、玩游戏、收听音乐、观看视频、访问(例如,上载)对用户的计算设备是本地的信息或任何其他形式的功能。同样如图1A中所示,浏览器12包括共享工作器14。在各个示例中,共享工作器14被配置成获得网络可访问的信息,例如存储在图1的示例中的一个或多个网络服务器16A-16C上的信息,并且向一个或多个web应用15A-15B提供所获得的信息。共享工作器应用14可以被进一步配置成将所获得的信息存储在计算设备10的本地存储器中,以使共享工作器14可以使用该信息来满足来自一个或多个web应用15A-15B的对相同或相似信息的一个或多个请求。例如,如果web应用15A已请求过共享工作器14响应于该请求获得并且被存储在本地存储器中的某些网络可访问的信息,如果web应用15B传送对相似信息的请求,则共享工作器可以访问存储在本地存储器中的信息来满足来自web应用15B的请求。根据本公开的技术,共享工作器14可以进一步创建一个或多个子组件18的实例和/或使得能够与一个或多个子组件18的实例进行通信/在一个或多个子组件18的实例之间进行通信。如在此所述的子组件18是被配置成由多于一个web应用使用的web应用功能的预定义实现。如在此所述的子组件实例18A、18B指用于特定web应用15A、15B的子组件功能的实现。在一些示例中,子组件实例18A、18B包括web应用功能的视觉渲染。例如,web应用15A、15B可以利用子组件18的一个或多个实例18A、18B,诸如即时消息(聊天)窗口、联系人采集器、日历事件输入/更新窗口、照片上载和/或展现子窗口、或音频/视频展现/播放器窗口、或可以由多于一个web应用使用的任何其他功能。
如在此所述的共享工作器14可以是计算设备可执行来获得网络可访问的信息和/或对在浏览器12中执行的web应用的子组件实例(例如,18A、18B)/视觉用户接口进行更新的软件。在一个特定示例中,共享工作器14可以是以JavaScript语言编写的软件(程序指令)的一个或多个独立线程。在其他示例中,共享工作器14可以包括以任何其他语言编写的软件。图1B图示展现不同子组件的实例48A和49A的两个示例的主机(主要)web应用45(与URL www.mail, google, com相关联的HTML文档)的一个非限制性示例。如在此所述,子组件是定义被配置成由多于一个web应用使用的功能的软件。如在此所述的子组件的实例是子组件与web应用一起的实现。如图1B中所示的第一子组件实例48A是联系人采集器子组件的实例。如所示,子组件实例48A在主机web应用35的视觉描绘的一部分上展现子组件功能的视觉描绘。例如,子组件实例48A向用户提供用来搜索联系人、选择联系人、添加联系人、查看建议的联系人和/或在用户的已定义的联系人内找到重复的联系人的视觉控件。在图1B中还示出了第二子组件实例49A。第二子组件实例49A是聊天窗口子组件的实例。聊天窗口向用户展现了大概与另一个用户的聊天内容。尽管在图1B中未示出,然而,聊天窗口可以示出用户所发送或接收的消息。如图1B中所示,聊天窗口还展现了文本输入框50以供用户输入消息。仅出于说明目的,提供了图1B的示例,并且其意在是非限制性的。如在此所述的子组件是可以由多于一个web应用或单个web应用的多于一个实例利用的任何一致功能。Web应用使用子组件可以是有利的,因为使用特定子组件的每一个web应用不必独立定义该子组件。如此,对于在其中期望子组件的功能的每一个web应用,可以重复使用而不是重新编写定义子组件的代码(例如,Java script)。进一步,使用预定义的子组件可以使功能集成不那么复杂。另外,共同子组件可以通过跨多个不同web应用提供一致性来改进用户体验,例如,每次用户使用用于不同web应用的类似功能时,用户不必重新学习如何操作特定功能。例如,可以通过电子邮件web应用(例如,gmail:www.gmail.com)和联系人web应用(例如,www.google, com/contacts)两者向用户展现相同的联系人采集器子组件。然而,已知的浏览器实现12可能以相对无效的方式提供子组件功能。例如,根据已知的浏览器实现,可以将定义子组件功能的代码嵌入在定义web应用自身的代码中。嵌入式子组件代码可能是不期望的,因为独立于使用子组件的主机web应用的发布周期对定义该子组件的代码进行更新可能很难。并且,典型地,从一个或多个网络服务器(例如,图1A的示例中的服务器16A-16C)访问定义web应用的这样的代码(以及相关联的子组件代码)。如此,为了在浏览器12中运作的两个web应用15A、15B使用相同子组件18,从一个或多个网络服务器两次访问定义子组件18的实例的代码。通过网络2不必要地访问信息可能是不期望的,尤其在计算设备10通过很慢和/或间歇网络2连接(例如,诸如蜂窝网络的移动网络)被耦接到一个或多个网络服务器16A-16C的情况下。出于其他原因,每web应用通过网络对子组件18实例化可能也是不期望的。例如,对于一些子组件(例如,聊天窗口、联系人采集器),可能期望的是,在两个或更多个子组件18实例之间同步状态。例如,在用户使两个浏览器窗口或标签打开以显示利用聊天窗口子组件18A-18B的两个(相同或不同)web应用时,可能期望的是,当消息被键入到第一聊天窗口时对第二聊天窗口进行更新。根据已知的浏览器实现,为了执行这样的更新,第一子组件实例18A可以将状态改变(例如,新的消息)传送给一个或多个网络服务器16A-16C。该一个或多个网络服务器16A-16C然后可以将该状态更新传送到托管第二子组件实例18B的web应用。托管web应用然后可以相应地更新第二子组件实例18B。该实现可能是不期望的,因为该同步状态需要通过网络2的通信来在第一和第二子组件实例18A、18B之间同步状态。在计算设备10通过很慢和/或间歇网络2连接(例如,诸如蜂窝网络的移动网络)被耦接到网络服务器16A-16C的情况下,这可能是尤其不期望的。在另一个示例中,已知的浏览器实现可能需要与每一个子组件实例18A、18B相关联的信息被独立存储在计算设备的本地存储器中。这可能也是不期望的,因为增加了访问存储器的需求,以及信息可能在存储器中不必要地被复制。本公开的技术解决了已知web浏览器实现为web应用创建子组件的实例以及在子组件的实例之间共享状态更新的上述不足。如此,如在图1A中所示,浏览器12合并有共享工作器应用14。在一个示例中,共享工作器14可以为一个或多个web应用15A、15B创建一个或多个子组件18的实例(子组件实例18A、18B表示单个子组件18的实例)。例如,根据来自web应用15A的请求,共享工作器14可以通过网络2从一个或多个网络服务器16A-16C获得定义子组件18的软件代码。共享工作器14可以将定义子组件18的软件代码传送给web应用15A,以为web应用15A创建子组件18的实例18A。在一个示例中,共享工作器14可以对web应用15A进行分析来为子组件实例18A确定适当位置。共享工作器14可以进一步确定子组件实例18A的形状。在一个示例中,共享工作器14可以对定义子组件18的软件代码进行修改,来提供将子组件实例18A定义成符合用于子组件实例18A的相对于web应用15A的适当位置和/或尺寸/形状的软件代码。共享工作器14可以进一步将定义子组件18的软件代码存储在浏览器12正在其上运作的计算设备10的本地存储器中。如此,共享工作器14可以根据来自第二 web应用15B的创建相同子组件18的第二实例18B的第二请求,基于存储在本地存储器中的软件代码来创建子组件18的第二实例18B。因此,根据本公开的技术,通过共享工作器14共享子组件18可以减少访问网络2来获得创建子组件18的实例18A、18B的代码的需求。在另一个示例中,本公开的技术提供了对一个或多个子组件实例的改进的更新。例如,如图1A中所示,浏览器12可操作来向用户展现第一 web应用15A。第一 web应用15A使用子组件18的第一实例18A。子组件18的第一实例18A如上所述可能已由共享工作器12创建。子组件实例18A可以接收更新。例如,在子组件18是聊天窗口的情况下,子组件实例18A可以接收以聊天消息形式的状态更新。根据已知的浏览器实现,使用子组件实例18A的web应用将自身基于该web应用的代码来更新子组件实例18A (例如,子组件功能的视觉渲染)以反映状态更新。根据本公开的技术,可以将状态更新发送给共享工作器14,并且共享工作器14可以作为响应发送可以被执行来渲染子组件实例18A的更新版本的软件代码,而不是web应用15A自身更新子组件实例18A的渲染来反映状态更新。在另一个示例中,本公开的技术提供了对子组件18的子组件实例18A、18B的改进的状态同步。例如,如图1A中所示,浏览器12被运作来向用户展现第一 web应用15A和第二 web应用15B。第一和第二 web应用15A、15B可以分别展现子组件18的第一和第二实例18A、18B。子组件18的第一和第二实例18A-18B如上所述可能已由共享工作器12实例化。共享工作器14可以使得能够进行对计算设备10是本地的对子组件实例18A、18B状态的通信。例如,第一子组件实例18A可以接收状态更新(例如,在子组件18A是即时消息窗口的情况下,子组件18A可以接收用户消息)。子组件实例18A (或主机web应用15A)可以将该状态更新传送给共享工作器14。共享工作器14可以在接收了该状态更新时,将该状态更新传送给第一子组件实例18A和第二子组件实例18B中的一个或多个。在一些示例中,将状态更新传送给第一和第二子组件实例中的一个或多个包括对该一个或多个子组件实例的视觉描绘进行更新。在一个示例中,将状态更新传送给一个或多个子组件实例18A、18B可以包括将被更新成合并有(来自第一子组件实例18A的)所接收的状态更新的至少一个软件代码部分传送给主机web应用15A、15B中的一个或多个。因此,可以(例如,通过执行定义该子组件的更新的软件代码)对子组件实例18A、18B进行更新来反映子组件实例18A的状态更新(例如,可以通过子组件实例18A、18B的视觉描绘向用户显示该用户消息)。在一些示例中,共享工作器14可以进一步将所接收的状态更新(和/或被更新成合并有该状态更新的软件代码)本地存储在例如计算设备10的暂时性存储器中,使得可以向子组件18的另一个实例(图1中未示出)提供该状态更新。因此,根据本公开的技术,通过共享工作器14共享子组件实例18A-18B状态更新可以减少访问网络2的需求,因为状态更新对浏览器12正在其上运作的计算设备10是本地通信的。并且,根据该示例,由于与子组件实例18A、18B相关联的信息可以由共享工作器14存储在单个位置,并且随着对该信息的需求产生为子组件实例18A-18B提供,因此,可以使存储在本地存储器中的重复信息最小化。图2是图示与本公开的技术一致的计算设备和在该计算设备上执行的包括共享工作器应用34以及第一 38A和第二 38B用户接口(UI)元件的浏览器12的一个示例的概念图。如在上面参考图1A和IB所述,可以将子组件18描述为被配置成由多于一个web应用使用的web应用功能的预定义实现。可以将子组件实例18A、18B描述为用于特定web应用15A、15B的子组件功能的实现。例如,子组件实例18A、18B可以是用于特定web应用的子组件15功能的视觉渲染。以这种方式,如图2中所示,子组件实例18A可以被认为是第一用户接口(UI)元件38A。类似地,子组件实例18B可以被认为是第二 Π元件38B。第一 Π元件38A可以基本上类似于第二 UI元件38B。例如,第一和第二 UI元件38A和38B可以被配置为特定子组件的第一和第二实例,例如,第一和第二 Π元件38A和38B中的每一个在视觉上表示相同或基本上相似的功能。在一些示例中,可以与UI元件38B所表示的功能共享UI元件38A的某个功能。在一些示例中,与Π元件38B相比,Π元件38A可以表示另外功能,然而仍然表示Π元件38B的功能的至少部分(例如,Π元件38A和38B两者均可以向用户展现聊天窗口、联系人采集器或其他功能)。如图2中所示,浏览器12可以执行共享工作器应用34。类似于在上面参考图1A和IB所述的示例,共享工作器应用34可以为一个或多个web应用(例如,图2的示例中的35A、35B)创建UI元件38A、38B。例如,根据来自web应用35A的请求,共享工作器34可以通过网络2从一个或多个网络服务器16A-16C获得定义第一 UI元件38A的软件代码。在一个示例中,共享工作器14可以对web应用35A进行分析来为第一 UI元件38A确定适当位置。共享工作器34可以进一步确定第一 Π元件38A的形状。在一个示例中,共享工作器34可以对定义第一 UI元件38A的软件代码(例如,可执行来通过计算设备10的显示器渲染第一 UI元件38A的软件代码)进行修改,来提供将子组件实例38A定义成符合用于子组件实例38A的相对于web应用35A的适当位置和/或尺寸/形状的软件代码。共享工作器34可以进一步将定义第一 UI元件38A的软件代码存储在浏览器12正在其上运作的计算设备10的本地存储器中。如此,共享工作器34可以根据来自第二 web应用35B的创建基本上类似于第一 UI元件38A的第二 UI元件38B的第二请求,基于存储在本地存储器中的软件代码来创建第二 Π元件38B。因此,根据本公开的技术,通过共享工作器34创建UI元件38A-38B可以减少访问网络2来获得创建UI元件38A-38B的代码的需求。在另一个示例中,本公开的技术提供了一个或多个Π元件38A-38B的改进的更新。例如,如图2中所示,浏览器12可操作来向用户展现第一 Π元件38A。第一 Π元件38A如上所述可能已由共享工作器32创建。第一 Π元件38A可以接收更新。例如,在第
一UI元件38A是聊天窗口的情况下,第一 UI元件38A可以接收以聊天消息形式的状态更新。根据已知浏览器实现,web应用35A将自身基于web应用35A的代码来更新第一 UI元件38A以反映状态更新。根据本公开的技术,可以将状态更新发送给共享工作器34,并且共享工作器34可以作为响应提供可以被执行来渲染第一 UI元件38A的更新版本的软件代码,而不是web应用35A自身更新第一 UI元件38A来反映状态更新。在另一个示例中,本公开的技术提供了对多个Π元件38A-38B的改进的状态同步。例如,如图2中所示,浏览器12被运作来向用户展现第一 web应用35A和第二 web应用35B。第一和第二 web应用35A、35B可以分别展现第一和第二 UI元件38A-38B。第一和第二 UI元件38A-38B可以表示基本上类似的功能。例如,第一和第二 UI元件38A-38B每一个可以表示诸如聊天窗口或联系人采集器的功能。共享工作器34可以使得能够进行对计算设备10是本地的对UI元件38A、38B状态的通信。例如,第一 Π元件38A可以接收状态更新(例如,在第一 Π元件38A是聊天窗口的情况下,子组件38A可以接收用户消息)。第一 UI元件38A或主机web应用35A可以将该状态更新传送给共享工作器34。共享工作器34可以在接收了该状态更新时,传送被更新成合并有来自第一 Π元件38A的所接收的状态更新的至少一个软件代码部分。因此,可以(例如,通过执行定义UI元件38A、38B的更新的软件代码)对第一和第二 UI元件38A、38B进行更新来反映第一 Π元件38A的状态更新(例如,可以向用户显示该用户消息)。在一些示例中,共享工作器34可以进一步将所接收的状态更新(和/或被更新成合并有该状态更新的软件代码)本地存储在例如计算设备10的暂时性存储器中,使得可以向web应用35A、35B的另一个Π元件或在计算设备10上执行的另一个web应用(图1中未示出)提供该状态更新。图3是图示可以由在此描述的技术使用的计算系统25的组件的一个示例的概念图。如在图3中所描绘,计算系统25可以被包括在各种类型的计算设备中。例如,设备20A是台式计算机。设备20B是膝上型计算机。设备20C是网络服务器或大型计算机。尽管图3中未描绘,合并有计算系统25的设备可以替代地包括被配置成通过网络进行计算和/或通信的任何数量的其他设备,包括移动设备,诸如移动电话、个人数字助理、智能手机、平板计算机或任何其他移动设备。同样在图3中未描绘的,合并有计算系统25的设备可以包括专用于其他功能的设备,例如被配置成通过网络进行通信的电视。设备20A-20C的任何一个可以表示在图1A和图2中所描绘的本地计算设备10。设备20A-20C的任何一个还可以表示在图1A和图2中所描绘的网络服务器16A-16E。系统25包括处理器22、存储器26、存储设备24和输入/输出组件29。组件22、
24、26和29中的每一个可以通过用于组件间通信的系统总线28互连。处理器22可以被配置成处理用于在系统25内执行的指令。处理器22可以是单线程处理器、或可以替代地是被配置成同时并行处理各种指令的多线程处理器。处理器22可以能够对存储在存储器26中的指令或存储在存储设备24上的指令进行处理。在一个示例中,处理器22可以被配置成对指令进行处理以促使浏览器12在系统25上与本公开的技术一致运作。系统25进一步可以包括外围设备27。外围设备27可以包括例如用于向系统25的用户展现视觉信息的监视器或其他显示设备。外围设备27可以进一步包括使用户能够向系统25输入数据的一个或多个输入设备,例如键盘、鼠标、触摸板、轨迹板、触摸屏等。外围设备27可以进一步包括打印机、监视器、扬声器或用来输出信息的其他设备。在一个示例中,处理器22可以被配置成对指令进行处理以促使例如图1A和图2的浏览器12的浏览器的视觉描绘向用户显示。如图3中所示,浏览器12可以包括如在此所述的共享工作器应用14。如上所述,共享工作器14可以被配置成为一个或多个web应用实例化子组件和/或使得能够进行子组件实例的本地同步。浏览器12可以在图3中描绘和/或上述的设备20A-20D的任何一个的处理器上运作。存储器26可以被配置成在操作期间存储在系统600内的信息。可以将存储器26描述为计算机可读存储介质。在一些示例中,存储器26是暂时性存储器,意为存储器26的主要目的不是长期存储。还可以将存储器26描述为易失性存储器,意为存储器26在关闭计算机时不维持存储的内容。易失性存储器的示例包括随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)以及本领域已知的其他形式的存储器。在一些示例中,可以使用存储器26来存储程序指令以供处理器22执行。在其他示例中,存储器26可以由运行于系统25上的软件或应用使用来在程序执行期间暂时存储信息。也可以将存储设备24描述为计算机可读存储介质。与存储器26相比,存储设备24可以被配置成存储比存储器26更大量的信息。存储设备24可以被进一步配置为对信息进行长期存储。在一些示例中,存储设备24是非易失性存储器组件。与易失性存储器组件相比,无论是否向存储设备24供应电力,非易失性存储器均可以存储数据。非易失性存储设备的示例包括磁硬盘、光盘、软盘、闪存以及其他形式的电可编程存储器(EPROM)或电可擦可编程(EEPROM)存储器。在此描述的技术可以根据如参考图3描述的计算系统25,以数字电子电路、计算机硬件、固件、软件或数字电子电路、计算机硬件、固件、软件的任何组合来实现。例如,任何在此描述的技术可以通过存储在计算机可读存储介质(例如,存储设备24、存储器26)中、处理器22可读取来促使处理器22执行本公开的技术的可执行程序指令来实现。如在此所述的计算机可读介质可以被认为是非暂时性计算机可读介质。在其他示例中,本公开的技术中的部分或全部可以替代或另外通过为特定目的配置的专用硬件来实现,例如,现场可编程门阵列(FPGA)、专用集成电路(ASIC)、数字信号处理器(DSP)或类似设备。图4是图示与在此描述的技术一致的合并有被配置成创建一个或多个子组件18的实例和/或使得能够进行子组件实例18A、18B状态的本地同步的共享工作器应用14的浏览器12的一个示例的框图。如图4中所示,浏览器12可以被操作来向用户显示第一 web应用15A。第一 web应用15A可能期望使用子组件18的功能。子组件18定义至少一些web应用功能并且被配置成由多于一个web应用使用。在一些示例中,至少一个子组件可以展现web应用功能的视觉描绘。在一个示例中,第一 web应用15A可以将创建子组件18的实例的请求传送给共享工作器应用14。在其中根据HTML5规范定义共享工作器14的一个示例中,请求可以是“instantiateComponent”请求。该请求可以指示为发出请求的web应用15A或不同web应用(例如,图4示例中的web应用15B)创建子组件实例18A。响应于该请求(或当共享工作器14可以独立创建子组件18的实例时,独立于该请求),共享工作器14可以为第一 web应用18A创建子组件18的第一实例18A。在一个示例中,共享工作器14创建子组件18的实例18A可以包括共享工作器14传送定义子组件18A的一个或多个软件代码部分。在一个示例中,该一个或多个软件代码部分可以以通常用于web应用编程的Javascript语言定义。在其他示例中,该一个或多个软件代码部分可以根据字节码或指令表来定义。其他编程语言所定义的软件代码部分也是预期的并且与本公开的技术一致。该一个或多个软件代码部分可以由一个或多个处理器(例如,在上面图2中描绘的处理器22)执行来创建子组件实例18A。共享工作器14还可以将该一个或多个软件代码部分存储在计算设备10的本地存储器25中以供稍后使用。在一个示例中,响应于创建子组件18实例18A的请求,共享工作器14可以向web应用15A发送包括以下中的一个或多个的响应消息:1)子组件和/或子组件的特定实例的标识符;2)子组件的目标(例如,在web应用上用于待被渲染的子组件的视觉描绘的帧或空间);3)当子组件实例检测到任何事件(例如,状态改变)时该子组件实例调用的函数;以及4)存储器中用来存储与子组件相关联的任何信息的地方。可以将响应消息的上述内容包括在传送给web应用15A的软件代码部分中。上述内容可以替代地利用软件代码部分被传送、或独立地被传送。在其中根据HTML5规范定义响应消息的上述内容的一个特定示例中,子组件的目标(在上面的2)可以由“ -targetElement”命令识别,当子组件实例检测到任何事件时调用的函数(在上面的3)可以由“eventFunct (event Message) ”命令识别,以及存储与子组件相关联的信息的地方(在上面的4)可以由“-uiContext”命令定义。共享工作器14可以进一步为子组件实例18A控制状态更新。子组件实例18A可以接收状态更新。根据其中子组件实例18A表示聊天窗口子组件18的示例,子组件实例18A可以接收用户消息。根据已知浏览器实现,子组件实例18A所接收的状态更新可以由web应用15A的代码进行处理,并且web应用15A可以操作来根据该更新渲染子组件实例18A的视觉描绘。然而,根据在此描述的技术,状态更新可以由子组件实例18A自身或主机web应用15A传送给共享工作器14。作为响应,共享工作器14可以对定义子组件18的软件代码进行更新来合并有该状态更新。因此,可以执行定义子组件18的软件代码的更新版本来与该状态更新一致地渲染子组件实例18A的视觉描绘。
同样如图4中所示,浏览器12可以运作第二 web应用15B。如同第一 web应用15A,第二 web应用15B可能期望利用与子组件18相关联的功能。如此,第二 web应用15B可以向共享工作器14传送实例化子组件18的请求。响应于该请求(或当共享工作器14自身可以确定是否实例化子组件18时,独立地),共享工作器14可以为主机web应用15B创建子组件实例18B。在一个示例中,创建子组件实例18B包括共享工作器14将定义子组件18的一个或多个软件代码部分传送给第二 web应用15B。在一个示例中,可以从本地存储器(例如,如在上面图3中所示的本地存储器25)访问定义子组件18的该一个或多个软件代码部分。在一个示例中,定义子组件18的该一个或多个软件代码部分可能先前在共享工作器14创建子组件实例18A时已被存储。该一个或多个软件代码部分可以由一个或多个处理器(例如,在上面图3中所描绘的处理器22)执行来创建子组件实例18B。在上面参考图4所述的示例假设:当web应用15A、15B中的一个或多个期望使用子组件18功能时,共享工作器14已在浏览器12上运行。在其他示例中,共享工作器14可能没在浏览器12中运行。根据这些示例,一个或多个web应用15A、15B可以促使共享工作器14被实例化。在其他示例中,来自web应用15A、15B中的一个或多个的对子组件18实例的请求可以自动导致共享工作器14的实例化,其然后可以如上所述获得定义子组件18的软件代码用于实例化。图5是图示与本公开的技术一致的使得能够本地同步子组件状态的共享工作器应用14的概念图。如图5中所示,包括子组件18的第一实例18A的第一 web应用15A正在浏览器12中运作。同样如图5中所示,包括子组件18的第二实例18B的第二 web应用15B正在浏览器12中运作。第一 web应用15A可以是与web应用15B相同的web应用的第二实例(例如,指向相同URL的浏览器12的独立窗口或标签)。第一 web应用15A替代地可以是与第二 web应用15B不同的web应用。在一个示例中,子组件实例18A可以接收状态更新。状态更新可以由用户或另外(例如,由web应用15A)发起。在一个示例中,在子组件18是聊天窗口的情况下,对子组件实例18A的状态更新可以指示用户已将文本输入到聊天窗口中。在另一个示例中,在子组件18是联系人采集器的情况下,对子组件实例18A的状态更新可以指示用户已输入或选择了新的联系人。如图5中所示,子组件实例18A (或web应用15A)可以将该状态更新传送给共享工作器14。在一个示例中,共享工作器14然后可以将该状态更新传送给第二子组件实例ISB0第二子组件18B然后可以基于所接收的状态更新来更新其状态。例如,在子组件18是聊天窗口的情况下,第二子组件实例可以在第二子组件实例18B中反映(例如,通过第一子组件实例18A输入的)用户输入的文本。在另一个示例中,当子组件18是联系人采集器的情况下,第二子组件实例18B可以反映通过子组件实例18A用户对新的联系人的输入或用户对联系人的选择。在另一个示例中,响应于从子组件18A接收的状态更新,共享工作器14可以对定义子组件18的软件代码进行更新来合并有该状态更新。例如,共享工作器14可以访问原来用于创建子组件实例18A和18B的软件代码来合并有该状态更新。原来用于创建子组件实例18A、18B的软件代码可能已被存储在本地存储器中。在一个示例中,在子组件18是聊天窗口的情况下,共享工作器14可以更新定义聊天窗口的视觉描绘的软件代码来反映状态更新(例如,输入的用户消息)。共享工作器14然后可以向web应用15A和15B中的一个或多个重新发送更新的软件代码。然后,可以执行更新的软件代码,使得对子组件实例18A、18B进行更新来反映状态更新(例如,新的消息)。子组件实例18A可以基于在创建子组件实例18A时所识别的命令来将状态更新传送给共享工作器14。在其中根据HTML5规范定义共享工作器14的一个特定示例中,子组件实例18A可以调用当事件更新(例如,子组件实例状态改变)发生时调用的函数,notifyOfEvent (componentID, eventMessage)函数,来将状态更新传送给共享工作器14。同样如图5中所示,共享工作器14可以访问本地存储器(例如,图3中的本地存储器25)来存储数据。因此,当共享工作器14接收子组件18A、18B中的一个或多个的状态更新时,共享工作器14可以将该状态更新存储在本地存储器26中。共享工作器14可以利用已存储的状态更新来更新子组件18的其他实例(图4A中未示出)。在其他示例中,共享工作器14可以对定义子组件18的软件代码进行更新来反映状态更新。根据这些示例,可以将更新的代码存储在本地存储器26中以供稍后使用。在一个示例中,如果用户打开期望使用与子组件18相关联的功能的第三web应用,则共享工作器14可以使用已存储的状态更新和/或更新的软件代码来创建子组件18的第三实例(图5中未示出)。如此,子组件18的第三实例可以在被创建时反映与子组件18的先前活动实例18A和18B相同的信息。图6是图示与本公开一致的共享工作器应用14的组件的框图。如图6中所示,共享工作器14包括web应用通信模块40 (在下文中,web应用模块40)、服务器通信模块42(在下文中,服务器模块42)以及存储器访问模块44。Web应用模块40 —般可以被配置成与一个或多个web应用30A-30C通信。例如,web应用模块40可以从web应用30A-30C中的一个或多个接收对信息的请求(和/或创建一个或多个子组件实例的请求),并且响应于请求,与服务器模块42通信来通过网络2从一个或多个网络服务器16A-16C获得所请求的信息(例如,定义子组件的软件代码)。同样响应于该请求,存储器访问模块44可以将所获得的信息存储在本地存储器25中以供稍后使用,诸如在第二 web应用请求可以通过存储在本地存储器中的信息满足的相同或相似信息的情况下。在另一个示例中,web应用模块40可以与存储器访问模块44通信以满足对信息的请求。响应于请求,存储器访问模块44可以确定存储在本地存储器25中的信息是否可以满足该请求。如果可以满足该请求,则共享工作器14可以访问存储在本地存储器25中的信息并且将该信息提供给一个或多个发出请求的web应用30A-30C。同样如图5中所示,在另一个示例中,存储器访问模块24可以被进一步配置成访问计算设备的本地数据存储24。根据该示例,可以将所获得的信息存储在本地数据存储24中,以使当浏览器12和/或浏览器12正在其上运作的计算设备停止运作时,已存储的信息仍然可以被访问,而不用从一个或多个网络服务器16A-16C获得。Web应用模块40可以进一步与一个或多个web应用30A-30C通信来接收创建子组件18的实例的请求。在一个示例中,响应于这样的请求,web应用模块40可以与服务器通信模块42通信来从一个或多个网络服务器16A-16C获得定义子组件18的至少一个软件代码部分。Web应用模块40然后可以将该至少一个软件代码部分传送给发出请求的web应用30A-30C。可以执行该软件代码部分,从而创建子组件18的实例ISA0在另一个示例中,web应用模块40可以替代地与存储器访问模块44通信来获得该至少一个软件代码部分。例如,存储器访问模块44可以确定定义所请求的子组件18的一个或多个代码段是否被存储在本地存储器中,并且如果该一个或多个代码段被存储在本地存储器中,则将该一个或多个代码段传送给发出请求的web应用30A-30C以供执行,从而创建子组件18的实例ISA0然而,如果该一个或多个代码段没有被存储在本地存储器中,则web应用模块40可以如上所述与服务器模块42通信来获得该一个或多个代码段。同样在图6中所示,web应用模块40可以包括状态同步模块46。状态同步模块46可以操作来使得能够通过共享工作器14在多个子组件实例18A-18C之间本地同步状态。多个子组件实例18A-18C可以在不同web应用中实例化(例如,第一子组件实例用于web应用30A以及第二子组件实例用于web应用30B)、或多个子组件实例可以在单个web应用(例如,web应用30A)中实例化。为了同步子组件18状态,状态同步模块46可以从web应用30A-30C的一个或多个子组件实例18A-18C接收子组件18状态的指示。在一个示例中,状态同步模块46可以对所接收的子组件18状态的指示进行分析来确定部分或全部子组件实例18A-18C是否应当由于状态更新而被更新。根据该示例,状态同步模块46可以通过存储器访问模块44或服务器模块42获得定义子组件18的软件代码。状态同步模块46然后可以与所接收的状态更新一致地更新定义子组件18的软件代码,并且将更新的软件代码传送给一个或多个web应用30A-30C。然后,可以执行更新的软件代码来更新子组件实例18A-18C。状态同步模块46可以进一步与存储器访问模块44通信来存储更新的软件代码以供稍后使用。图7是图示与本公开的技术一致的方法的一个示例的流程图。该方法包括从在计算设备上运作的web应用15A接收对子组件18的实例的请求(71)。该方法进一步包括获得定义子组件18的至少一个软件代码部分(72)。在一个示例中,该方法包括从一个或多个网络服务器16A-16C获得该至少一个软件代码部分。在另一个示例中,该方法包括从计算设备10的本地存储器25获得该至少一个软件代码部分。在另一个示例中,该方法可以进一步包括确定将满足该请求的至少一个软件代码部分是否被存储在计算设备的本地存储器25中,以及如果本地存储器25不包括将满足该请求的至少一个软件代码部分,则从一个或多个网络服务器16A-16C获得该至少一个软件代码部分。该方法进一步包括响应于该请求向web应用15A传送该至少一个软件代码部分以创建子组件18的实例18A (73)。在一个示例中,该至少一个软件代码部分对计算设备10本地通信来创建子组件18的实例ISA0图8是图示与本公开的技术一致的方法的一个示例的流程图。该方法包括在计算设备上运作的浏览器中,实例化被配置成响应于来自在该浏览器中运作的一个或多个web应用的至少一个请求而获得网络可访问的信息的共享工作器应用(81)。该方法进一步包括:通过共享工作器14接收对子组件18的状态更新的至少一个指示,其中子组件的至少一个实例正在浏览器中运作(82)。可以从子组件的实例18A、从子组件18的另一个实例18B或从主机web应用15A接收对子组件18的状态更新的至少一个指示。子组件18的实例18A如上所述可能已由共享工作器14创建。该方法进一步包括对计算设备是本地地并且通过共享工作器响应于状态更新的至少一个指示,更新子组件的至少一个实例18A(83)。在一个示例中,更新子组件的至少一个实例18A、18B包括传送被更新成反映状态更新的至少一个指示的至少一个软件代码部分。在另一个示例中,可以重复步骤82和83。例如,如果共享工作器14接收对子组件18的状态更新的第二指示,则共享工作器可以响应于状态更新的第二指示,更新子组件的至少一个实例18A。图9是图示根据本公开的技术的被配置成实例化一个或多个子组件18和/或使得能够与一个或多个子组件18的实例通信/在一个或多个子组件18的实例之间通信的共享工作器应用的一个示例的框图。上述共享工作器14的示例针对被配置成在同一 web域上运作的共享工作器14和web应用15A-15B (30A-30C)。如在此所述的域可以被描述为URI在第一斜杠之前的部分(例如,对于URI www.google, com/contacts,域是www.google,com)o出于安全目的,已知web浏览器12限制在不同域上运作的web应用之间的通信。如图9中所描绘,本公开的技术可以适用于跨域以及如上所述的域内。如图9中所示,web应用90正在浏览器12中运作。Web应用90与第一域即域A相关联。共享工作器94与第二域即域B相关联。Web应用90可能期望子组件98为web应用90被实例化。然而,与上述示例不同,子组件98可能与不同于域A的第二域即域B相关联。由于浏览器12的安全需求,可能阻止web应用90与域B的web应用,包括共享工作器94通信。如此,为了发起跨域通信,web应用90可以促使子web应用92被创建。在一个示例中,子web应用92与域A相关联,然后与域B相关联地被创建。在另一个示例中,子web应用92与域B相关联地被创建。在一个示例中,子web应用92是在相关领域众所周知的内嵌框架web应用(“iframe”)。子web应用92可以运作为用于在web应用90和与域B相关联的共享工作器94和/或其他web应用之间的通信的代理。最初,子web应用92可以阻止来自web应用90的任何通信。子web应用92可以在允许与web应用90的跨域通信之前,首先安全验证与域A相关联的web应用90。子web应用92可以通过本领域已知的各种机制,包括安全令牌交换和/或白名单比较,来安全验证与域A相关联的web应用90。一旦经过安全验证,子web应用92可以保持活动以运作为用于跨域通信的代理。在一个示例中,web应用90可能期望使用与域B相关联的子组件的功能。如此,web应用90可以如上所述传送对创建子组件98的实例98A的请求。子组件98可以是被配置成为多于一个web应用提供web功能的组件。子web应用92可以接收该请求,并且确定共享工作器94是否正与域B相关联地运作。如果共享工作器94没有正与域B相关联地运作,则子web应用92可以促使共享工作器94被实例化。子web应用92可以将对实例化子组件98的请求转送给共享工作器应用94。如上所述,共享工作器应用94可能试图确定定义所请求的子组件98的软件代码是否被存储在浏览器12正在其上运作的计算设备的本地存储器中。如果定义所请求的子组件98的软件代码被存储在计算设备的本地存储器中,则共享工作器94可以通过子web应用92将该软件代码传送给web应用90以创建子组件实例98A。如果定义子组件98的软件代码没有被存储在本地存储器中,则共享工作器94可以通过网络与一个或多个网络服务器通信来获得该软件代码。一旦被获得,共享工作器94就可以通过子web应用92将该软件代码传送给web应用90以创建子组件实例98A。共享工作器94可以进一步将所获得的定义子组件98的软件代码存储在本地存储器中,以供稍后使用。在图9中未描绘的另一个示例中,共享工作器94可以使得能够在与域A相关联的子组件98的实例98A和与域B相关联的子组件98的另一个实例(图9中未示出)之间进行状态同步。例如,如果与子组件实例98相关联的子组件98的第二实例正与域B相关联地运作,则共享工作器应用94可以响应于通过子web应用92从子组件实例98A接收的状态更新,更新定义子组件的软件代码。共享工作器94然后可以将更新的软件代码传送给子组件实例98A和/或与域B相关联的第二子组件实例。因此,可以对浏览器12正在其上运作的计算设备本地地,同步子组件实例98和与域B相关联的第二子组件实例的状态。在上面参考图9描述的示例可以是有利的,因为利用跨域通信来实例化子组件(例如,子组件98)和/或使得能够在子组件之间进行本地状态同步,可以更大减少由web浏览器的已知实现关于子组件共享引起的上述缺陷,因为进一步最小化了对网络通信的需求。图10是图示与本公开的技术一致的方法的一个示例的流程图。该方法包括通过在计算设备10上执行的浏览器12执行被配置成向计算设备所渲染的用户接口(UI)元件38A、38B提供更新的共享工作器应用34 (1001)。该方法进一步包括通过浏览器12执行被配置成展现第一 UI元件38A的视觉渲染的第一 web应用35A (1002)。该方法进一步包括通过浏览器12执行被配置成展现第二 Π元件38B的视觉渲染的第二 web应用35B,其中第
二UI元件38B基本上类似于第一 UI元件38A( 1003)。该方法进一步包括通过共享工作器应用34并且从第一 UI元件38A接收对第一 UI元件38A的状态更新,其中该状态更新包括对待由第一 Π元件38A提供的视觉内容的更新。该方法进一步包括通过共享工作器应用34对第一 UI元件38A和第二 UI元件38B的视觉渲染进行更新以反映所接收的状态更新。图11是图示与本公开的技术一致的方法的一个示例的流程图。该方法包括通过在计算设备10上执行的浏览器12执行主机web应用35A(1101)。该方法进一步包括通过浏览器12执行被配置成向在计算设备上执行的至少一个主机web应用提供至少一个用户接口(UI)元件的共享工作器34 (1102)。该方法进一步包括从主机web应用35A并且通过共享工作器34接收对创建展现与主机web应用35A相关联的UI元件38A的功能的视觉描绘的用户接口(UI)元件38A的视觉渲染的请求(1103)。该方法进一步包括通过共享工作器34获得可执行来展现UI元件35A的视觉渲染的软件(1104)。该方法进一步包括通过共享工作器34将所获得的软件存储在计算设备10的存储器中(1105)。该方法进一步包括响应于该请求而执行所获得的软件来创建与主机web应用25A协同展现的UI元件38A的视觉渲染(1106)。可以至少部分以硬件、软件、固件或其任何组合来实现在本公开中所述的技术。例如,可以在一个或多个处理器,包括一个或多个微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或任何其他等价集成或分立逻辑电路以及这样的组件的任何组合内实现所述技术的各个方面。词语“处理器”或“处理电路” 一般可以指单独或结合其他逻辑电路的任何前述逻辑电路、或任何其他等价电路。包括硬件的控制单元也可以执行本公开的技术中的一个或多个。可以在同一设备或单独设备内实现这样的硬件、软件和固件来支持在本公开中描述的各种技术。另外,任何所述单元、模块或组件可以在一起实现或分别被实现为分立但是可共同操作的逻辑器件。将不同特征描述为模块或单元意在强调不同功能方面,并且并不一定暗指这样的模块或单元必须由单独的硬件、固件或软件组件实现。相反,与一个或多个模块或单元相关联的功能可以由单独的硬件、固件或软件组件执行、或被集成在共同或单独的硬件、固件或软件组件内。还可以将在本公开中所述的技术具体化或编码在包含指令的计算机可读介质中,诸如计算机可读存储介质。嵌入或编码在计算机可读介质,包括计算机可读存储介质中的指令可以促使一个或多个可编程处理器或其他处理器实现在此所述的技术中的一个或多个,诸如当包括或编码在计算机可读介质中的指令被该一个或多个处理器执行时。计算机可读存储介质可以包括随机存取存储器(RAM)、只读存储器(ROM)、可编程只读存储器(PR0M)、可擦可编程只读存储器(EPR0M)、电可擦可编程只读存储器(EEPROM),闪存、硬盘、光盘ROM (CD-ROM)、软盘、带盒、磁介质、光介质或其他计算机可读介质。在一些示例中,制品可以包括一个或多个计算机可读存储介质。已描述了本公开的各种实施例。这些和其他实施例在所附权利要求的范围内。
权利要求
1.一种用于向视觉用户接口元件提供更新的方法,所述方法包括: 通过在计算设备上执行的浏览器执行被配置成向所述计算设备所渲染的用户接口(UI)元件提供更新的共享工作器应用; 通过所述浏览器执行被配置成展现第一 UI元件的视觉渲染的第一 web应用; 通过所述浏览器执行被配置成展现第二 Π元件的视觉渲染的第二 web应用,其中所述第二 UI元件基本上类似于所述第一 UI元件; 通过所述共享工作器应用并且从所述第一 UI元件接收对所述第一 UI元件的状态更新,其中所述状态更新包括对待由所述第一 Π元件提供的视觉内容的更新;以及 通过所述共享工作器应用对所述第一 UI元件和所述第二 UI元件的所述视觉渲染进行更新以反映所接收的状态更新。
2.根据权利要求1所述的方法,其中对所述第一UI元件和所述第二 UI元件的所述视觉渲染进行更新以反映所接收的状态更新包括: 通过所述共享工作器应用获得可执行来定义至少所述第一 Π元件的所述视觉渲染的软件; 对所述软件进行修改以反映所接收的状态更新; 执行所述软件以更新所述第一 UI元件的所述视觉渲染;以及 执行所述软件以更新所述第二 UI元件的所述视觉渲染。
3.根据权利要求2所述的方法,其中获得可执行来定义至少所述第一Π元件的所述视觉渲染的所述软件包括: 从所述计算设备的存储器获得所述软件。
4.根据权利要求2所述的方法,其中获得可执行来定义至少所述第一Π元件的所述视觉渲染的所述软件包括: 通过网络连接从网络服务器获得所述软件。
5.根据权利要求2所述的方法,进一步包括: 将被修改成反映所接收的状态更新的所述软件存储在所述计算设备的本地存储器中。
6.根据权利要求5所述的方法,进一步包括: 通过所述共享工作器接收创建基本上类似于所述第一和第二 Π元件的第三Π元件的请求;以及 通过所述共享工作器执行被修改成反映所接收的状态更新的所存储的软件来创建所述第三Π元件以反映所接收的状态更新。
7.根据权利要求1所述的方法,其中所述第一UI元件表示所述第一 web应用的功能,以及其中所述第一 web应用的所述功能从由以下组成的组中来选择: 即时消息窗口; 联系人采集器; 日历事件输入/更新窗口; 照片上载和/或展现窗口 ;以及 音频/视频展现/播放器窗口。
8.—种包括存储指令的计算机可读存储介质的制品,所述指令促使计算设备: 通过在计算设备上执行的浏览器执行被配置成向所述计算设备所渲染的用户接口(UI)元件提供更新的共享工作器应用; 通过所述浏览器执行被配置成展现第一 UI元件的视觉渲染的第一 web应用; 通过所述浏览器执行被配置成展现第二 Π元件的视觉渲染的第二 web应用,其中所述第二 UI元件基本上类似于所述第一 UI元件; 通过所述共享工作器应用并且从所述第一 UI元件接收对所述第一 UI元件的状态更新,其中所述状态更新包括对待由所述第一 Π元件提供的视觉内容的更新;以及 通过所述共享工作器应用对所述第一 UI元件和所述第二 UI元件的所述视觉渲染进行更新以反映所接收的状态更新。
9.根据权利要求8所述的制品,其中所述计算机可读存储介质进一步存储指令,所述指令促使所述计算设备: 通过所述共享工作器应用获得可执行来定义至少所述第一 Π元件的所述视觉渲染的软件; 对所述软件进行修改以反映所接收的状态更新; 执行所述软件以更新所述第一 Π元件的所述视觉渲染;以及 执行所述软件以更新所述第二 Π元件的所述视觉渲染。
10.根据权利要求8所述的制品,其中所述计算机可读存储介质进一步存储指令,所述指令促使所述计算设备: 从所述计算设备的存储器获得所述软件。
11.根据权利要求8所述的制品,其中所述指令进一步促使所述计算设备: 通过网络连接从网络服务器获得所述软件。
12.根据权利要求8所述的制品,其中所述计算机可读存储介质进一步存储指令,所述指令促使所述计算设备: 将被修改成反映所接收的状态更新的所述软件存储在所述计算设备的本地存储器中。
13.根据权利要求12所述的制品,其中所述计算机可读存储介质进一步存储指令,所述指令促使所述计算设备: 通过所述共享工作器接收创建基本上类似于所述第一和第二 Π元件的第三Π元件的请求;以及 通过所述共享工作器执行被修改成反映所接收的状态更新的所存储的软件来创建所述第三UI元件以反映所接收的状态更新。
14.根据权利要求12所述的制品,其中所述第一UI元件表示所述第一 web应用的功能,以及其中所述第一 web应用的所述功能从由以下组成的组中来选择: 即时消息窗口; 联系人采集器; 日历事件输入/更新窗口; 照片上载和/或展现窗口 ;以及 音频/视频展现/播放器窗口。
15.一种设备,包括: 浏览器,其被配置成执行被配置成向所述计算设备所渲染的用户接口(UI)元件提供更新的共享工作器应用,以及其中所述浏览器被进一步配置成执行被配置成展现第一 UI元件的视觉渲染的第一 web应用和被配置成展现第二 Π元件的视觉渲染的第二 web应用;用于从所述第一 Π元件并且通过所述共享工作器应用接收对所述第一 Π元件的状态更新的装置,其中所述状态更新包括对待由所述第一 Π元件提供的视觉内容的更新;以及用于通过所述共享工作器应用对所述第一 Π元件和所述第二 Π元件的所述视觉渲染进行更新以反映所接收的状态更新的装置。
16.根据权利要求15所述的设备,进一步包括: 用于获得可执行来定义至少所述第一 Π元件的所述视觉渲染的软件的装置; 用于对所述软件进行修改以反映所接收的状态更新的装置; 用于执行所述软件以更新所述第一 UI元件的所述视觉渲染的装置;以及 用于执行所述软件以更新所述第二 UI元件的所述视觉渲染的装置。
17.根据权利要求16所述的设备,其中用于获得可执行来定义至少所述第一Π元件的所述视觉渲染的软件的装置包括用于从所述计算设备的存储器获得所述软件的装置。
18.根据权利要求16所述的设备,其中用于获得可执行来定义至少所述第一Π元件的所述视觉渲染的软件的装置包括用于通过网络连接从网络服务器获得所述软件的装置。
19.根据权利要求16所述的设备,进一步包括: 用于将被修改成反映所接收的状态更新的所述软件存储在所述计算设备的本地存储器中的装置。
20.根据权利要求19所述的设备,进一步包括: 用于接收创建基本上类似于所述第一和第二 Π元件的第三Π元件的请求的装置;以及 用于执行被修改成反映所接收的状态更新的所存储的软件来创建所述第三UI元件以反映所接收的状态更新的装置。
21.一种用于通过web应用展现视觉用户接口元件的方法,所述方法包括: 通过在计算设备上执行的浏览器执行主机web应用; 通过所述浏览器执行被配置成向在所述计算设备上执行的至少一个主机web应用提供至少一个用户接口(UI)元件的共享工作器; 从所述主机web应用并且通过所述共享工作器接收对创建展现与所述主机web应用相关联的用户接口(UI)元件的功能的视觉描绘的所述用户接口(UI)元件的视觉渲染的请求; 通过所述共享工作器获得可执行来展现所述Π元件的所述视觉渲染的软件; 通过所述共享工作器将所获得的软件存储在所述计算设备的存储器中;以及执行所获得的软件来响应于所述请求而创建与所述主机web应用协同展现的所述UI元件的所述视觉渲染。
22.根据权利要求21所述的方法,其中所述Π元件是第一Π元件,以及其中所述方法进一步包括: 通过所述共享工作器接收创建第二 Π元件的视觉渲染的第二请求;以及 执行所获得的软件来响应于所述第二请求而创建所述第二 UI元件的所述视觉渲染。
23.根据权利要求21所述的方法,其中获 得可执行来定义至少所述第一Π元件的所述视觉渲染的所述软件包括:从所述计算设备的存储器获得所述软件。
24.根据权利要求21所述的方法,其中获得可执行来定义至少所述第一Π元件的所述视觉渲染的所述软件包括: 通过网络连接从网络服务器获得所述软件。
25.根据权利要求21所述的方法,其中与所述主机web应用相关联的所述Π元件的功能的所述视觉描绘从由以下组成的组中来选择: 即时消息窗口; 联系人采集器; 日历事件输入/更新窗口; 照片上载和/或展现窗口 ;以及 音频/视频展现/播放器窗口。
26.根据权利要求21所述的方法,其中将所获得的软件存储在所述计算设备的存储器中包括将所获得的软件存储在所述计算设备的易失性存储器中。
27.一种包括存储指令的计算机可读存储介质的制品,所述指令促使计算设备: 通过在计算设备上执行的浏览器执行主机web应用; 通过所述浏览器执行被配置成向在所述计算设备上执行的至少一个主机web应用提供至少一个用户接口(UI)元件的 共享工作器; 从所述主机web应用并且通过所述共享工作器接收对创建展现与所述主机web应用相关联的用户接口(UI)元件的功能的视觉描绘的所述用户接口(UI)元件的视觉渲染的请求; 通过所述共享工作器获得可执行来展现所述Π元件的所述视觉渲染的软件; 通过所述共享工作器将所获得的软件存储在所述计算设备的存储器中;以及执行所获得的软件来响应于所述请求而创建与所述主机web应用协同展现的所述UI元件的所述视觉渲染。
28.根据权利要求21所述的制品,其中所述Π元件是第一Π元件,以及其中所述指令进一步促使所述计算设备: 通过所述共享工作器接收创建第二 Π元件的视觉渲染的第二请求;以及 执行所获得的软件来响应于所述第二请求而创建所述第二 UI元件的所述视觉渲染。
29.根据权利要求21所述的制品,其中所述指令促使所述计算设备: 从所述计算设备的存储器获得所述软件。
30.根据权利要求21所述的制品,其中所述指令促使所述计算设备: 通过网络连接从网络服务器获得所述软件。
31.根据权利要求21所述的制品,其中与所述主机web应用相关联的所述Π元件的功能的所述视觉描绘从由以下组成的组中来选择: 即时消息窗口; 联系人采集器; 日历事件输入/更新窗口; 照片上载和/或展现窗口 ;以及 音频/视频展现/播放器窗口。
32.根据权利要求21所述的制品,其中所述指令进一步促使所述计算设备将所获得的软件存储在所述计算设备的易失性存储器中。
33.一种设备,包括: 由浏览器执行的主机web应用; 由所述浏览器执行的共享工作器应用,其中所述共享工作器应用包括: 用于从所述主机web应用接收对创建展现与所述主机web应用相关联的用户接口(UI)元件的功能的视觉描绘的所述用户接口(UI)元件的视觉渲染的请求的装置; 用于获得可执行来展现所述Π元件的所述视觉渲染的软件的装置; 用于将所获得的软件存储在所述计算设备的存储器中的装置;以及用于执行所获得的软件来响应于所述请求而创建与所述主机web应用协同展现的所述Π元件的所述视觉渲染的装置。
34.根据权利要求33所述的设备,其中所述Π元件是第一UI元件,以及其中所述共享工作器进一步包括: 用于接收创建第二 UI元件的视觉渲染的第二请求的装置;以及用于执行所获得的软件来响应于所 述第二请求而创建所述第二 UI元件的所述视觉渲染的装置。
35.根据权利要求33所述的设备,其中用于获得可执行来展现所述Π元件的所述视觉渲染的软件的所述装置从所述计算设备的存储器获得所述软件。
36.根据权利要求33所述的设备,其中用于获得可执行来展现所述Π元件的所述视觉渲染的软件的所述装置通过网络连接从网络服务器获得所述软件。
37.根据权利要求33所述的设备,其中与所述主机web应用相关联的所述Π元件的功能的所述视觉描绘从由以下组成的组中来选择: 即时消息窗口; 联系人采集器; 日历事件输入/更新窗口; 照片上载和/或展现窗口 ;以及 音频/视频展现/播放器窗口。
38.根据权利要求33所述的设备,用于将所获得的软件存储在所述计算设备的存储器中的所述装置将所获得的软件存储在所述计算设备的易失性存储器中。
全文摘要
本公开的技术针对被配置成为一个或多个web应用创建一个或多个实例和/或本地同步一个或多个子组件实例的状态的共享工作器应用。在一个示例中,浏览器的共享工作器通过从浏览器正在其上运作的计算设备的存储器或通过网络获得定义子组件的软件,并且提供对计算设备是本地的该软件以供执行来创建子组件的实例,来便于创建子组件实例。在另一个示例中,如上所述的浏览器的共享工作器便于对浏览器正在其上运作的计算设备是本地的对多个子组件实例的状态更新。
文档编号G06F9/44GK103180822SQ201180049050
公开日2013年6月26日 申请日期2011年7月28日 优先权日2010年8月12日
发明者德雷克·菲利普斯, 安德鲁·格里夫, 马修·博洛汉, 罗伯特·克勒格尔 申请人:谷歌公司