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

Activities是IE8 提供了一种新的web页面的服务提供机制,
详细可以参见白皮书
http://code.msdn.microsoft.com/Release/ProjectReleases.aspx?ProjectName=ie8whitepapers&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 context="selection" >
<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 context="selection" >
<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>
posted @ 2008-03-06 17:33
nfa2dfa 阅读(2823)
评论(20) 编辑 收藏