为 IE8 写一个转跳加速器

烦恼

是不是经常遇到一些文章,文中提及了一些外部资源却不给出链接,或者给出地址又不做成超级链接呢?这样一来要去参观一下这些资源的话,我们就先得复制一下地址,然后粘贴到地址栏,再按回车!尽管你使用的是 Google Chrome 可以使用“粘贴并转到”,但是步骤仍然繁琐,不是吗?

我就实在忍受不了啦,我想,如果能搞一个简单的东西,实现直接转跳多好啊,我注意到 IE8 有个新的“加速器”功能,那么是不是可以做一个加速器来实现呢?看起来好像可以哦!

关于 IE8 加速器的简介,可以看这里,就不多说了。

解决

准备工作

我搜索了一下,看了一些加速器开发的文章,最终还是觉得这篇 MSDN 文档最有用。仔细阅读了一下,发现加速器有 homepageUrl 的限制,也就是说,所有请求的域名是固定不能改变的,这对于我们想要转跳到不同的地址这个要求,无疑等于关上了大门。等一下,真的是这样吗?我们可以搞一个服务,接受一个地址请求,然后重定向就行了,不是么?

与其自己建一个,不如用现成的!那个现成的就是 Google 的“手气不错”!

接下来就是看看“手气不错”是怎么工作的了(知道的请无视):

打开 Google 首页,直接点击 I'm Feeling Lucky 这个按钮,就会转跳到这个地址:

http://ipv6.google.com/search?hl=en&source=hp&q=&btnI=I%27m+Feeling+Lucky&aq=f&aql=&aqi=&oq=

仔细看一下,其实有用的就是 btnI=I'm… 这一串东西了,表明按的是“手气不错”这个按钮,前面就是关键字,平时我们搜索的时候,关键字都赋给 q 的,这个应该没有问题的,可以改一改验证一下。

加速器描述

现在知道怎么跟“手气不错”打交道了,接着就是按照文档写描述加速器的 XML 了:

<?xml version="1.0" encoding="UTF-8"?>
<openServiceDescription xmlns="http://www.microsoft.com/schemas/openservicedescription/1.0">
    <homepageUrl>http://ipv6.google.com</homepageUrl>
    <display>
        <name>Luckily jump to</name>
        <icon>http://ipv6.google.com/favicon.ico</icon>
        <description>Perform &quot;feeling lucky&quot; jump!</description>
    </display>
    <activity category="Jump">
        <activityAction context="selection">
            <execute method="get"
             action="http://ipv6.google.com/search?btnI=I%27m+Feeling+Lucky&amp;q={selection}"/>
        </activityAction>
    </activity>
</openServiceDescription>

内容非常简单,照着文档写就行了。

安装

文档写着,使用 window.external.AddService('XML描述文件路径') 这句脚本即可将它添加到浏览器了,我在本地运行却收到了错误提示:

安装错误提示

解决的办法有两个:

一、自己在VS新建一个网站,添加XML文件(这里是 Lucky.xml),然后把 default.aspx 的 body 标签的内容换成如下代码:

<button onclick="window.external.AddService('lucky.xml')" 
        style="height: 74px; width: 139px">Add Lucky Jumper</button>

然后运行网站,点击按钮即可安装。

二、上传到 IE Add-ons Gallery,在那里注册一个账号,完成 Upload 即可分享。我已经上传了,地址是:

http://www.ieaddons.com/en/details/other/Luckily_jump_to/

在那里点击 Add to Internet Explorer 按钮即可安装。

总结

自己动手,丰衣足食!

posted @ 2010-01-21 00:22 DiryBoy 阅读(...) 评论(...) 编辑 收藏