分享

OpenSearch基于XML的开放网站搜索协议

 看见就非常 2015-05-07

OpenSearch基于XML的开放网站搜索协议

文章教程 · 用户研究 · uedsc 发布了文章 · 67 浏览 · 0 回复 · 2天前

现在很多流行的浏览器,默认都支持地址栏的右边有个搜索框,这样的设计有利于用户快速的搜索内容,默认是使用google搜索服务,不过天朝的浏览器就五花八门了,什么搜索引擎都有。

OpenSearch基于XML的开放网站搜索协议

其实这是 OpenSearch 的一个应用,只要编写相应的微格式的 xml 文件,就可以制定相应的搜索框。参考 OpenSearch 的定义文档,可以基本获得基本的 xml 格式。比如某个典型的的搜索 xml 文件可以这样指定。

概述

OpenSearch的是Amazon.com子公司A9公司所提出的一种分享搜寻结果的简单的格式,它于2005年3月首次在O’Reilly新兴技术会议上提出OpenSearch1.0版本。使用版本为1.1版。

通俗的,从普通用户角度来说:

例如用户访问某个网站,该网站具备搜索功能,并提供遵循OpenSearch规范的代码,那么支持OpenSearch功能的浏览器(目前有IE7、IE8、Firefox、Chrome)就能够自动发现并提示添加新的搜索插件/扩展到浏览器的搜索栏中。

例如,如果用户使用的是IE8浏览器,那么在浏览器的右上角,就会发现一个小文本输入框,输入框前方的下拉菜单可以用来选择需要的搜索引擎(常用的比如百度、谷歌等)。

而一旦用户根据提示,选择安装某网站的搜索插件/扩展后,新的搜索功能也将会出现在搜索栏的下拉菜单中。

如何搜索您的网站是存在一个XML文件里并且是OpenSearch的标准 。 其次,把这个XML通过<head>元素 (可以对每个网页 )中的<link>标记指向。 当用户在他们的浏览器访问您的网站可以侦测到这方面的资料,并允许用户将您的网站添加到他们的浏览器搜索栏中。

使用这种技术,您可以为您的网站创建一个自定义搜索,而且您的访问者可以添加到他们的浏览器搜索栏中。 加入后,用户可以直接从他们的浏览器搜索栏中搜索您的网站,就像他们可以从同一界面上搜索Google或其他搜索引擎。 本文说明如何创建一个XML文件符合OpenSearch的标准,以及如何把它连结在您的网站的网页上。

技术分析

既然是XML文档,那么下面就是一份简单的示例,该代码是Github的OpenSearch.xml:

<OpenSearchDescription xmlns="http:///-/spec/opensearch/1.1/"
                       xmlns:moz="http://www.mozilla.org/2006/browser/search/">
  <ShortName>GitHub</ShortName>
  <Description>Search GitHub</Description>
  <InputEncoding>UTF-8</InputEncoding>
  <Image width="16" height="16" type="image/x-icon">https://github.com/favicon.ico</Image>
  <Url type="text/html" method="get" template="https://github.com/search?q={searchTerms}&ref=opensearch"/>
  <moz:SearchForm>https://github.com/search</moz:SearchForm>
</OpenSearchDescription>

代码讲解

上面的 xml 文件很容易理解,除了固定的 xml 根以外,其他的定义从字面上就可以理解:

  • InputEncoding 指定搜索的编码,根据网站的实际情况而定
  • ShortName 这个是搜索的短名称,比如“Google 搜索”
  • Description 针对这个搜索框的描述,比如“淘宝购物搜索 – 只有你想不到,没有你淘不到”
  • Image 类似网页的 favicon ,用于标识搜索
  • Url 这个是最重要的参数,指定搜索的链接。它有很多参数,一般使用 {searchTerms} 参数指定搜索词即可。参数 type=”text/html” 注明返回的是页面(浏览器会跳转到这个页面),如果是其他格式就会使用相应默认程序打开(比如 type=”application/rss+xml” 就会使用 RSS 阅读器打开)。

添加方法

编写 OpenSearch 的 xml 格式就完成了,详细信息可以参阅其 OpenSearch 定义文档。下面要在页面中加入这个搜索,基本上可以分为两种方式。分别是页面的在 head 中加入 link 标记(类似 RSS),以及使用 Javascript 方式添加(比如定义某个按钮触发)。

link方法

加入 link 标记非常简单,格式如下

<link rel="search" type="application/opensearchdescription+xml"
            href="http://.i/search.xml" title="ShortName" />

与 RSS 相似,rel 和 type 是固定的,我们主要指定 href (上述 xml 的 url 路径,保险起见使用绝对路径,即 http:// 开头)以及 title (也就是搜索的短标题)即可。就这样,在 Explorer 以及 Firefox 中打开这个页面就可以看见相应的菜单了

JavaScrip方法

使用 Javascript 添加比较麻烦(或许现在的情况会很好多)。我们主要会使用浏览器的扩展功能,在 Explorer 有个 window.external.AddSearchProvider 参数(详细文档)。典型的调用方法如下

window.external.AddSearchProvider('http://.i/search.xml');

参数中的链接就是上述 link 中的内容。在 Firefox 下可以使用

window.sidebar.addSearchEngine(
    "http://.i/search.xml", /* engine URL */
    "favicon.ico",  /* icon URL */
    "ShortName", /* engine name */
    "Description" ); /* category name */

参数和例子如示例代码中所述(官方文档)。值得注意的是在 Firefox2 版本以后已经“兼容” Explorer 的 window.external.AddSearchProvider 调用方法(详细信息)。那么我们对应的 Javascript 代码就可以这样编写(为了兼容 Firefox2 之前的版本,加入 else if 判断,如果觉得没有必要,可以不加)

function addEngine(){
    if (window.external || window.external.AddSearchProvider) {
        window.external.AddSearchProvider('http://.i/search.xml');
    } else if (window.sidebar && window.sidebar.addSearchEngine) {
                window.sidebar.addSearchEngine(
                    "http://.i/search.xml",
                    "favicon.ico",  /* icon URL */
                    "ShortName", /* engine name */
                    "Description" ); /* category name */
    }}

这样,就可以将这个函数注册到某个链接或者按钮的点击事件中,就会跳出个确认框,如图用户点击确认以后,就加入到浏览器搜索框中了。

支持的网站和软件

支持OpenSearch索引功能的一些网站包括:

  • www.opensearch.:协议创始人官方网站
  • www.mycroft.mozdev.org:mozilla提供的提交OpenSearch的网站
  • www.searchxengine.com: 一家提供OpenSearch功能安装的网站

支持的主流浏览器

  • Internet Explorer 7 及其以上版本,提供搜索栏,能够自定义安装新的符合OpenSearch协议规则的插件/扩展。
  • Mozilla Firefox 2及其以上版本,同样提供搜索栏,允许安装新插件/扩展,以及Mozilla同时还推出一个名为
  • MozSearch的协议子集。MozSearch主要面 向Web用途,并只能用于Firefox相关的项目。MozSearch扩展功能可接受一个XML命名空间前缀OpenSearch的文件,并提供一些新 的特性,包括比如搜索建议。
  • GoogleChrome,来自谷歌公司的新一代浏览器,以速度快和安全性而著称。不同于上面两款浏览器,Chrome没有提供独立的搜索栏,而是将搜索栏整合进浏览器的地址栏中。通过输入OpenSearch来源网址加上关键词,就可以快速进行搜索。

浏览器搜索栏插件/扩展

访问者

如果您正在使用的浏览器是:IE7版本或者以上、Mozilla Firefox2或者3、Google Chrome,它们都默认提供一个专用的搜索框,用来直接搜索内容。opensearch 支持网站提供各种类型的搜索引擎,帮助您安装到浏览器的专用搜索框中。这样,以后无须直接打开对应的网站,您就可以快速搜索到感兴趣的内容。举例来说,您访问某个网站,那么支持OpenSource功能的浏览器(目前有IE7、IE8、Firefox、Chrome)就能够自动发现并提示添加新的搜索插件/扩展到浏览器的搜索栏中。例如,您使用的是IE8浏览器。

网站主

如果您拥有自己的网站,并且网站具备搜索功能,那么,可以制作对应的符合Open Search协议的浏览器搜索栏扩展功能,让对您网站感兴趣的访问者直接从搜索栏就可以获得信息。

参考

交流:问说网设计交流群:12043441(快速加入),与众多设计师交流设计,分享素材。
设计微博:@问说网 欢迎关注获取网页设计资源、下载顶尖设计素材。
设计导航:全球顶尖设计网站推荐,设计师必备导航:http://dao.
本站文章除注明转载外,均为本站原创或翻译,欢迎任何形式的转载,但请务必注明出处。
转载请注明:文章转载自:问说网 ? OpenSearch基于XML的开放网站搜索协议
本文标题:OpenSearch基于XML的开放网站搜索协议
本文地址:http://www./opensearch.html

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多