试试下面这个功能吧:(选中之后是利用“博客园”的博问搜索进行搜索……)
IE8中添加Activity的JavaScript脚本(这是一个来自淘宝网的例子)(本文最后脚本有做修改
<script type="text/javascript">function addActivity() {if (navigator.userAgent.indexOf('MSIE 8') == -1) {alert('请首先安装IE8.');} else {window.external.addService('activities/taobao-search.xml');}
}
</script>

相关XML描述文件:http://ie8.taobao.com/activities/taobao-search.xml
<?xml version="1.0" encoding="UTF-8" ?>
<openServiceDescription xmlns="http://www.microsoft.com/schemas/openservicedescription/1.0"><homepageUrl>http://www.taobao.com</homepageUrl><display><name>淘宝搜索</name><icon>http://www.taobao.com/favicon.ico</icon></display><activity category="Find"><activityAction context="selection"><preview action="http://ie8.taobao.com/activities/preview.php?query={selection}" /><execute method="get" action="http://ie8.taobao.com/list.php?query={selection}" /></activityAction></activity>
</openServiceDescription>

更多细节请查看活动白皮书。
写了一个简单的Google搜索的Activity XML:
<?xml version="1.0" encoding="UTF-8" ?><openServiceDescription xmlns="http://www.microsoft.com/schemas/openservicedescription/1.0"><homepageUrl>http://www.google.com</homepageUrl><display><name>Google Search</name><icon>http://www.google.com/favicon.ico</icon></display><activity category="Find">- <activityAction context="selection"><preview action="http://www.google.com/search?q={selection}" /><execute method="get" action="http://www.google.com/search?q={selection}" /></activityAction></activity>
</openServiceDescription>

其中有句用于描述homepageUrl节点的说明:The main URL of the Activity where the user can access the service through browsing. All URLs expressed in this format must match the domain of the homepageUrl.也就是后续的所有的URLs都必须与主页Url在相同的域中。比如上例中就必须都是google.com域中。

openServiceDescription是专门用于Activity的xml节点名。


形如selection的位置,若在尾部加“?”则表示若该标记为空,将以空格代替。如:

<execute method="get" action="http://example.com/done.aspx?url={documentUrl}&title={documentTitle?}" />

其中documentUrl是必选项,而documentTitle因为带了“?”,所以是可选项。


另外以下几种简单的标记在“预览”窗体中是不会有效的。

· <select>
· <input type="text">
· <text area>


关于脚本:

//JavaScript API for Activities
//检查服务是否已经安装了
//参数:Service XML,name
window.external.IsServiceInstalled("http://maps.live.com/GetMap.xml", "map"); //添加服务
//参数:Service XML
window.external.AddService("http://maps.live.com/GetMap.xml"); 


下面是白皮书中所给出的示例,相对元素更齐全一些:

<?xml version="1.0" encoding="UTF-8"?>
<openServiceDescriptionxmlns="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>

试试下面这个功能吧:(选中之后是利用“博客园”的博问搜索进行搜索……)

下面是上面这个按钮的代码:

<div>
<script type="text/javascript">
function addActivity(xml) {if (navigator.userAgent.indexOf('MSIE 8') == -1) {alert('请首先安装IE8.');} else {window.external.addService(xml);}
}
</script>
试试下面这个功能吧:(选中之后是利用“博客园”的博问搜索进行搜索……) </div>
<div><input οnclick="addActivity('http://files.cnblogs.com/volnet/cnblogsactivity.xml');" value="将博客园添加到IE8的活动中" type="button"> </div>
<?xml version="1.0" encoding="UTF-8" ?>
<openServiceDescription xmlns="http://www.microsoft.com/schemas/openservicedescription/1.0"><homepageUrl>http://www.cnblogs.com</homepageUrl><display><name>博客园</name><icon>http://www.cnblogs.com/favicon.ico</icon></display><activity category="Blog">- <activityAction context="selection"><preview action="http://space.cnblogs.com/search/q?all={selection}" /><execute method="get" action="http://www.cnblogs.com/" /></activityAction></activity>
</openServiceDescription>

添加后若不喜欢,可以在IE8的“管理活动”中进行移除。

因为IE8为了做兼容IE7以及过去的网页,添加了一个“模仿IE7(Emulate IE7)”的按钮,这导致了当使用了该按钮的网页在使用以上所述的脚本的时候,navigator.userAgent的值显示的是IE7内核的相关代码,因此我们的判断可能会不准确,但是Activity功能事实上并不依赖于IE内核而存在,也就是如果你用的是IE8但你仅仅只是使用了模仿IE7的功能,那么你实质上还是可以使用Activity功能的。因此上面一直使用的脚本可以修改为下面的样子,以兼容这种特殊的伪装行为。

function addActivity(xml){try{window.external.addService(xml);}catch(e){//alert(e.toString());alert('请首先安装IE8');}
}

于此同时我也记录下了navigator.userAgent在常见浏览器中的一些值,以让大家更好地了解之前所使用的脚本所进行的内部工作。

//IE7(或IE8中使用了兼容IE7模式)
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 1.1.4322)//IE8
Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 1.1.4322)//Firefox/2.0.0.13
Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13//Safari3
Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN) AppleWebKit/523.15(KHTML,like Gecko) Version/3.0 Safari/523.15

IE8中如何添加Activity相关推荐

  1. Android 在布局容器中动态添加控件

    这里,通过一个小demo,就可以掌握在布局容器中动态添加控件,以动态添加Button控件为例,添加其他控件同样道理. 1.addView 添加控件到布局容器 2.removeView 在布局容器中删掉 ...

  2. 在ScrollView中动态添加View

    需求:要求在ScrollView中动态添加View,并且添加的View可以进行缩进. 思路:一开始的思路是使用ListView动态添加Item的方法来实现,即当需要新增一个View时,就给适配器新增一 ...

  3. linux中ftp用户,linux中怎么添加ftp用户

    Linux下创建用户是很easy的事情了,只不过不经常去做这些操作,时间久了就容易忘记.那么linux中怎么添加ftp用户,下面跟着学习啦小编一起来了解一下吧. linux中怎么添加ftp用户 在li ...

  4. R语言ggplot2可视化、在可视化区域中自定义添加多个大小不同矩形阴影区域、自定义配置大小不同矩形阴影区域的颜色(Adding multiple shadows/rectangles)

    R语言ggplot2可视化.在可视化区域中自定义添加多个大小不同矩形阴影区域.自定义配置大小不同矩形阴影区域的颜色(Adding multiple shadows/rectangles) 目录

  5. border-raduis 在IE8中的兼容性问题

    border-raduis 是css3新增加的属性,我们运用起来也很方便,效果很好,但是在IE8以及之前的ie版本并不支持这个属性,怎么解决这个问题呢? 1.切成背景 这也是我经常用到的方法,虽然说有 ...

  6. vs的资源管理器中一次性添加整个文件夹

    如何在vs的资源管理器中一次性添加整个文件夹   如何一次添加整个文件夹到vs资源管理器中? 1.将你想要添加的文件夹复制到你想要添加的项目当中 2.打开你所在的项目,点击项目,在菜单中,项目-> ...

  7. android img标签属性_微信小程序 组件叠加效果(如 Android 中的添加蒙层)

    实现的效果如下: 可以看出这是由image组件和text组件叠加到一块组成的蒙层效果. 在小程序中实现这个效果主要用到z-index属性和position属性 z-index的使用必须是双方组件都设置 ...

  8. android viewpager动态加载页面,Android viewpager中动态添加view并实现伪无限循环的方法...

    本文实例讲述了Android viewpager中动态添加view并实现伪无限循环的方法.分享给大家供大家参考,具体如下: viewpager的使用,大家都熟悉,它可以实现页面之间左右滑动的切换,这里 ...

  9. IE8中HTTP连接数目的变化

    国际标准RFC 2616(http://www.w3.org/Protocols/rfc2616/rfc2616.html)规定,客户端向服务器发起的并发HTTP连接数目应该有个上限. 如果是HTTP ...

最新文章

  1. 来一波我和朋友们的私房菜!
  2. pycharm 基本设置
  3. python 包介绍:osmnx
  4. mac 下homebrew 的安装和卸载
  5. OPT和LRU页面置换算法C语言代码,页面置换算法模拟——OPT、FIFO和LRU算法.doc
  6. 数据仓库组件:HBase集群环境搭建和应用案例
  7. Firefox必备的24款web开发插件[转]
  8. 多名员工拉横幅讨薪却跑错地方?暴风集团回应...
  9. 从Graalvm性能测试结果看选择JVM和native-image的策略
  10. 学点 C 语言(3): 转义字符
  11. WebService开发常用功能详解
  12. Http 理论基础-请求与响应、响应状态码汇总
  13. 项目进度计划表_18份施工进度计划图 | 开工必备,都给你整理好了
  14. python中什么是句柄_python中的句柄操作的方法示例
  15. Xiaojie雷达之路---DPM External Functions详解
  16. python笔记003
  17. 灭屏流程 - 安卓R
  18. 糖友秦女士反映时刻注意自己的饮食太痛苦了
  19. 第36.5节 动画-跟踪运动中物体的操作器
  20. 万字长文---手把手教你加固内核安全配置

热门文章

  1. group by 后面加条件_无论炖什么肉,只要加这“两种”调料,肉质鲜嫩入味,越炖越香...
  2. ci框架中引入css,php ci框架中载入css和js文件失败的原因及解决方法
  3. ie提示保护计算机关闭网页,xp系统解决IE为保护计算机关闭网页方法分享
  4. find找多个单元格的文本_灵活套用LEFT、RIGHT、MID、FIND函数,解决90%的信息提取问题...
  5. Windows平台下使用Dokan实现文件系统的开发
  6. mysql 8.0 java连接报错:Unknown system variable 'query_cache_size'
  7. js 操作table: insertRow(),deleteRow(),insertCell(),deleteCell()方法
  8. 【转自小峰博客】协调器的启动【自动模式】
  9. Android学习之碎片的生命周期
  10. Ajax(一)——Ajax基础概念,HTTP头部(重点)