IE8 Activities尝鲜

文/huazhihao  出处/博客园

(使用IE8的同学可以试一下这个demo)

 附件: 您所在的用户组无法下载或查看附件


Activities是IE8 提供了一种新的web页面的服务提供机制,
详细可以参见白皮书
http://code.msdn.microsoft.com/R ... s&ReleaseId=566

以及msdn:OpenService Format Specification for Activities - Version 0.8
http://msdn2.microsoft.com/en-us/library/cc304163(VS.85).aspx

简介

Activities可以看作是对浏览器右键菜单的增强,使用户可以更舒适的提供查询条件,并更便捷的获取相应。
例如IE8内置的live translator activities,用户在浏览器选中一段文本,会在选中文本上悬浮出一个按钮,点击这个按钮可以获取匹配的Actvities菜单,鼠标悬浮在live translator菜单项上会有相应服务的预览,点击的话可以进入的服务页面,而你选中的文本已经作为参数传入了服务页面。

activities悬浮按钮

 附件: 您所在的用户组无法下载或查看附件
activities菜单及御览

 附件: 您所在的用户组无法下载或查看附件

按照Activities白皮书的目录结构,我简单介绍一下Activities。
1.xml 数据格式
2.分类
3.http方式提交
4.预览
5.本地化
6.部署
7.示例

xml 数据格式

白皮书上此处提供了一个标准的例子,
<?xml version="1.0" encoding="UTF-8"?>
<openServiceDescription xmlns="http://www.microsoft.com/schemas/openservicedescription/1.0";>
  <homepageUrl>http://maps.live.com</homepageUrl>
  <display>
    <name>Map with Live Maps</name>
    <icon>http://www.live.com/favicon.ico<;/icon>
  </display>
  <activity category="map">
    <activityAction c >
      <preview action=" http://maps.live.com/geotager.aspx">
        <parameter name="b" value="{selection}" />
        <parameter name="clean" value="true" />
        <parameter name="w" value="320" />
        <parameter name="h" value="240" />
        <parameter name="format" value="full" />
      </preview>
      <execute action=" http://maps.live.com/default.aspx">
        <parameter name="where1" value="{selection}" type="text" />
      </execute>
    </activityAction>
  </activity>
</openServiceDescription>这个xml有什么用呢,这是Activities的描述文件,
这个xml怎么用呢,
注册Activities不过一行js
window.external.addService('activities.xml')"关于这个xml每个标签的意义,我也就先不翻译出来了,白皮书上描述的已经十分详细,有空待会儿把它译出来。

分类

map: Windows Live Map, Google Maps, Yahoo! Maps, Mapquest
blog: Windows Live Spaces, Windows Live Writer, Blogger
define: Encarta, Wikipedia, Dictionary.com
add: Del.icio.us, Reddit, Google Reader
translate: Windows Live Translation, Babelfish, Google Translation

白皮书上提供了这几个典型的分类,分类是activities xml dataformat里activity元素的属性,用来修饰这个activity。

http方式提交

activities提供的服务无所谓就是以http方式请求一些页面,然后显示出来。而execute标签及其子标签用来描述这些被请求的服务页面的地址以及参数。
<execute method="post" action="http://example.com/done.aspx>;"
  <parameter name="arg1" value="foo" />
  <parameter name="arg2" value="bar" />
</execute>像上面的配置,我想应该是相当的直白,表示点击activities相应的菜单项是,会跳转到http://example.com/done.aspx页面,并提供两个参数。

<execute method="post" action="http://example.com/done.aspx>;"
  <parameter name="url" value="{documentUrl}" />
  <parameter name="title" value="{documentTitle?}" />
</execute>而这一段配置就有一点magic了。如果说"foo","bar"这类是字符常量的话,{documentUrl}{documentTitle}就可以算作变量了。它们是从当前上下文中获取的,总共有以下几个变量:
documentDomain
documentTitle
documentUrl
link
linkDomain
linkRel
linkText
linkType
selection

(之前提到的live translator就是使用了{selection}变量)
可以使用execute 'method' 属性来描述到底是post还是get

预览

预览和提交其实差不多,它触发的时间是鼠标悬浮在菜单项上的时候。它的配置放在preview标签里,配置方式也差不多,不过御览窗口可不会全屏.

本地化

execute和preview标签有着两个属性
'enctype' 'accept-charset'
大家应该猜到事做什么的了吧。
不过不设也不要紧,enctype的默认值是"application/x-www-form-urlencoded"
accept-charset的默认值是"text"

部署

除了那句window.external.IsServiceInstalled(xmldataformatpath);以外,还有一句
window.external.IsServiceInstalled(xmldataformatpath,name);
不过我试验的时候曾经安装失败,因为我配置文件里homepageUrl标签的值设的和已经存在的activity一样。

示例

这是live map的示例,如果大家可以望眼欲穿的话,我也就可以安心收工了。


<?xml version="1.0" encoding="UTF-8"?>
<openServiceDescription xmlns="http://www.microsoft.com/schemas/openservicedescription/1.0";>
  <homepageUrl>http://maps.live.com</homepageUrl>
  <display>
    <name>Map with Live Maps</name>
    <icon> http://www.live.com/favicon.ico</icon>
  </display>
  <activity category="map">
    <activityAction c >
      <preview action=" http://maps.live.com/geotager.aspx">
        <parameter name="b" value="{selection}" />
        <parameter name="clean" value="true" />
        <parameter name="w" value="320" />
        <parameter name="h" value="240" />
        <parameter name="format" value="full" />
      </preview>
      <execute action=" http://maps.live.com/default.aspx">
        <parameter name="where1" value="{selection}" type="text" />
      </execute>
    </activityAction>
  </activity>
</openServiceDescription>

 感谢原创者的辛勤劳动,希望对您有所帮助,转载请注明原出处。
 您可能对 [Visual Studio.NET] 的这些文章也感兴趣:

IronPython 2.0 beta 5
MacOS X版Mono 2.0安装程序发布
VS 2008性能补丁以及VBScript的意外消息
Sending email with an embedded image through ASP.NET
.NET Framework Versions: Marketing vs. Reality
.NET数据库连接字符串集合
使用IIS 7自动将请求转发至内容服务器上
Visual Studio 2008 和 .NET Framework 3.5 Service Pack 1 Beta
概述CSLA.NET 3.6
VS2008、.NET 3.5 与 SharePoint 2007