何为Web Intents及其目前的实现状态

本文概要介绍了何为Web Intents,为何说Web Intents是有用的。Google在Chrome 19中启用了Web Intents,其在Safari上的实现是通过WebKit达成的,同时Mozilla也正在Web Intents上发力。

Web Intents是个相对较新的类似于RPC的机制,可以实现Web应用间的通信,这是通过在客户端(通常但不限于是网页)与服务(如网页、扩展API、插 件、OS处理器等,知道如何处理与加工各自的数据)之间传递数据并返回结果来实现的。整个过程是由User Agent(通常是浏览器)来处理的,它让用户决定由哪个服务来执行与Intent相关的动作。Web Intents类似于Android Intents,最初是由Google在去年提出的,现已被W3C接受为草案文档,并希望包含在HTML.Next中。

Google成为第一个在Google Chrome中实现了Web Intents的公司,其实验版本已经包含在最近发布的Chrome 19当中。要想使用Intents,客户端需要通过<intent>标签进行声明,指定待执行的action以及需要传递的数据type,如下代码片段所示:

<intent action="http://webintents.org/share" type="image/*" />

客户端需要包含进Intent调用代码,对于网页来说其代码如下所示:

var intent = new Intent( "http://webintents.org/share", "image/*", "http://example.com/image.png" ); window.navigator.startActivity(intent);

当Intent被调用时,User Agent会要求用户从已知的服务列表中选择一个服务,然后向所选的服务传递数据(在该例中就是“image.png”),服务会处理数据并有可能返回一 个结果。目前,Intent服务需要通过Chrome Web Store注册为Chrome扩展,但未来会有其他的解决方案出现。W3C草案还提到了Explicit Intents,客户端可以通过它指定想要使用的服务,在使用各自的服务这个问题上,User Agent可以通知用户,也可以不通知。如果Web应用的作者想要使用某种服务,那么该选项就很有用了。

目前,Intents支持如下动作:sharevieweditsavepicksubscribe。如果觉得不够,开发者还可以创建自己的动作。

Web Intents代表了继混搭之后的下一个风潮。相对于仅仅从多个源来聚合数据,Web Intents让属于不同实体的各种服务来进行数据处理成为了可能。可能的用例有:集成第三方搜索结果、编辑图片、登录认证等等。webintents.org网站提供了大量示例,如Twitter发布和短URL等。

由于Google已经将代码提交到了WebKit,我们有理由相信Safari会在未来的版本中包含进Web Intents。Firefox也开始了Intents上的工作,其公开的一个Firefox Bug引起了人们的热议。Mozilla已经决定在Gaia中实现Intents的原型,一旦稳定就会将其移到Gecko中。我们尚不清楚微软在Web Intents上的计划。

站长们不必等到所有主流浏览器都支持Web Intents后才开始行动,他们可以使用JavaScript shim库,一旦浏览器开始支持后,它会自动采用浏览器的实现。

查看英文原文:Web Intents: What They Are and Their Current Implementation Status

译者 张龙 热衷于编程,乐于分享,对新技术有强烈的探索欲,对Java轻量级框架有一定研究。

This entry was posted in ASP.NET. Bookmark the permalink.

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s