IE8中如何添加Activity
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>
<?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>
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为了做兼容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相关推荐
- Android 在布局容器中动态添加控件
这里,通过一个小demo,就可以掌握在布局容器中动态添加控件,以动态添加Button控件为例,添加其他控件同样道理. 1.addView 添加控件到布局容器 2.removeView 在布局容器中删掉 ...
- 在ScrollView中动态添加View
需求:要求在ScrollView中动态添加View,并且添加的View可以进行缩进. 思路:一开始的思路是使用ListView动态添加Item的方法来实现,即当需要新增一个View时,就给适配器新增一 ...
- linux中ftp用户,linux中怎么添加ftp用户
Linux下创建用户是很easy的事情了,只不过不经常去做这些操作,时间久了就容易忘记.那么linux中怎么添加ftp用户,下面跟着学习啦小编一起来了解一下吧. linux中怎么添加ftp用户 在li ...
- R语言ggplot2可视化、在可视化区域中自定义添加多个大小不同矩形阴影区域、自定义配置大小不同矩形阴影区域的颜色(Adding multiple shadows/rectangles)
R语言ggplot2可视化.在可视化区域中自定义添加多个大小不同矩形阴影区域.自定义配置大小不同矩形阴影区域的颜色(Adding multiple shadows/rectangles) 目录
- border-raduis 在IE8中的兼容性问题
border-raduis 是css3新增加的属性,我们运用起来也很方便,效果很好,但是在IE8以及之前的ie版本并不支持这个属性,怎么解决这个问题呢? 1.切成背景 这也是我经常用到的方法,虽然说有 ...
- vs的资源管理器中一次性添加整个文件夹
如何在vs的资源管理器中一次性添加整个文件夹 如何一次添加整个文件夹到vs资源管理器中? 1.将你想要添加的文件夹复制到你想要添加的项目当中 2.打开你所在的项目,点击项目,在菜单中,项目-> ...
- android img标签属性_微信小程序 组件叠加效果(如 Android 中的添加蒙层)
实现的效果如下: 可以看出这是由image组件和text组件叠加到一块组成的蒙层效果. 在小程序中实现这个效果主要用到z-index属性和position属性 z-index的使用必须是双方组件都设置 ...
- android viewpager动态加载页面,Android viewpager中动态添加view并实现伪无限循环的方法...
本文实例讲述了Android viewpager中动态添加view并实现伪无限循环的方法.分享给大家供大家参考,具体如下: viewpager的使用,大家都熟悉,它可以实现页面之间左右滑动的切换,这里 ...
- IE8中HTTP连接数目的变化
国际标准RFC 2616(http://www.w3.org/Protocols/rfc2616/rfc2616.html)规定,客户端向服务器发起的并发HTTP连接数目应该有个上限. 如果是HTTP ...
最新文章
- 来一波我和朋友们的私房菜!
- pycharm 基本设置
- python 包介绍:osmnx
- mac 下homebrew 的安装和卸载
- OPT和LRU页面置换算法C语言代码,页面置换算法模拟——OPT、FIFO和LRU算法.doc
- 数据仓库组件:HBase集群环境搭建和应用案例
- Firefox必备的24款web开发插件[转]
- 多名员工拉横幅讨薪却跑错地方?暴风集团回应...
- 从Graalvm性能测试结果看选择JVM和native-image的策略
- 学点 C 语言(3): 转义字符
- WebService开发常用功能详解
- Http 理论基础-请求与响应、响应状态码汇总
- 项目进度计划表_18份施工进度计划图 | 开工必备,都给你整理好了
- python中什么是句柄_python中的句柄操作的方法示例
- Xiaojie雷达之路---DPM External Functions详解
- python笔记003
- 灭屏流程 - 安卓R
- 糖友秦女士反映时刻注意自己的饮食太痛苦了
- 第36.5节 动画-跟踪运动中物体的操作器
- 万字长文---手把手教你加固内核安全配置
热门文章
- group by 后面加条件_无论炖什么肉,只要加这“两种”调料,肉质鲜嫩入味,越炖越香...
- ci框架中引入css,php ci框架中载入css和js文件失败的原因及解决方法
- ie提示保护计算机关闭网页,xp系统解决IE为保护计算机关闭网页方法分享
- find找多个单元格的文本_灵活套用LEFT、RIGHT、MID、FIND函数,解决90%的信息提取问题...
- Windows平台下使用Dokan实现文件系统的开发
- mysql 8.0 java连接报错:Unknown system variable 'query_cache_size'
- js 操作table: insertRow(),deleteRow(),insertCell(),deleteCell()方法
- 【转自小峰博客】协调器的启动【自动模式】
- Android学习之碎片的生命周期
- Ajax(一)——Ajax基础概念,HTTP头部(重点)