IE8 Activities尝鲜

(使用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>





Tag标签: IE8
posted @ 2008-03-06 17:33 nfa2dfa 阅读(2823) 评论(20)  编辑 收藏

  回复  引用  查看    
#1楼 2008-03-06 17:58 | 杨正祎      
期待着这篇文章。
  回复  引用  查看    
#2楼 2008-03-06 18:33 | Anders Liu      
竟然这么简单……

刚刚已经装好了IE8,可以考虑来些Activities玩玩了~
  回复  引用  查看    
#3楼 2008-03-06 19:06 | TerryLee      
博主够快的,我刚想晚上写篇关于IE8中 Activities的文章呢:)
  回复  引用  查看    
#4楼 2008-03-06 19:09 | 杨正祎      
这个俺要关注一下。呵呵。。
  回复  引用  查看    
#5楼 [楼主]2008-03-06 19:13 | nfa2dfa      
@TerryLee
就是看到TerryLee在杨正祎文章上的留言,我才想起来写一下。
没怎么好好些过随笔,写的很不像样子,希望TerryLee写篇专业的,以正视听。
  回复  引用  查看    
#6楼 [楼主]2008-03-06 19:15 | nfa2dfa      
@杨正祎
还有webslices,哪位花点时间写一下。
  回复  引用  查看    
#7楼 2008-03-06 19:23 | Q.Lee.lulu      
好象很好玩
  回复  引用  查看    
#8楼 2008-03-06 19:41 | TerryLee      
@nfa2dfa
呵呵,没关系,已经很不错了:)
  回复  引用    
#9楼 2008-03-06 19:56 | sjin0606 [未注册用户]
多谢楼主,正在关注中
  回复  引用    
#10楼 2008-03-06 20:01 | fff [未注册用户]
在ie7里是正常的
到ie8好多页面都显示布局是乱的哦
  回复  引用  查看    
#11楼 2008-03-06 20:21 | canbeing      
挺好玩
不知道装完IE8后,IE7还能用吗?
  回复  引用  查看    
#12楼 [楼主]2008-03-06 20:29 | nfa2dfa      
@canbeing
是升级到IE8,所以...,听杨正祎说,好像卸载以后没什么副作用。
  回复  引用    
#13楼 2008-03-06 21:15 | fff [未注册用户]
按装不要选升级那项
不用卸掉就回到IE7了
  回复  引用  查看    
#14楼 2008-03-06 21:21 | sunbird69      
IE8 可以方便的回到IE7的显示 模式
点右上角的  Emulate IE7,会有一个提示,重新启动IE
重新打一个窗口就可以按IE7显示样式了
  回复  引用    
#15楼 2008-03-06 21:32 | bkjh [未注册用户]
作演示的jane kim是个PLMM...
  回复  引用  查看    
#16楼 2008-03-06 21:35 | birdshome      
这个是不是有点像smart tag?
  回复  引用    
#17楼 2008-03-06 22:01 | anyone [未注册用户]
MSDN网站用IE8看,右上角的菜单都有问题
  回复  引用    
#18楼 2008-03-07 09:59 | kangnoz [未注册用户]
昨晚刚体验了IE8
  回复  引用  查看    
#19楼 2008-03-07 17:58 | 马可香蕉      
不错,这东西关注下

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2008-03-06 19:15 编辑过


相关链接: