zoukankan      html  css  js  c++  java
  • OpenSearch 初探

    很多现代的浏览器在地址栏的右边有个搜索框,默认的安装有 Google 搜索等。如下图所示

    snap2.png

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

    <?xml version="1.0" encoding="UTF-8"?>
    <OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">
        <InputEncoding>utf-8</InputEncoding>
        <ShortName>ShortName</ShortName>
        <Description>Description</Description>
        <Image type="image/vnd.microsoft.icon">favicon</Image>
        <Url type="text/html" template="http://who.am.i/search?word={searchTerms}"/>
      </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 rel="search" type="application/opensearchdescription+xml"
                href="http://who.am.i/search.xml" title="ShortName" />
    

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

    snap1.png

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

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

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

    window.sidebar.addSearchEngine(
        "http://who.am.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://who.am.i/search.xml');
        } else if (window.sidebar && window.sidebar.addSearchEngine) {
                    window.sidebar.addSearchEngine(
                        "http://who.am.i/search.xml",
                        "favicon.ico",  /* icon URL */
                        "ShortName", /* engine name */
                        "Description" ); /* category name */
        }}
    

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

  • 相关阅读:
    Get-CrmSetting返回Unable to connect to the remote server的解决办法
    Dynamics 365中的常用Associate和Disassociate消息汇总
    Dynamics 365 Customer Engagement V9 活动源功能报错的解决方法
    Dynamics Customer Engagement V9版本配置面向Internet的部署时候下一步按钮不可点击的解决办法
    Dynamics 365检查工作流、SDK插件步骤是否选中运行成功后自动删除系统作业记录
    注意,更改团队所属业务部门用Update消息无效!
    Dynamics 365的审核日志分区删除超时报错怎么办?
    Dynamics 365使用Execute Multiple Request删除系统作业实体记录
    Dynamics 365的系统作业实体记录增长太快怎么回事?
    Dynamics CRM日期字段查询使用时分秒的方法
  • 原文地址:https://www.cnblogs.com/chunyin/p/3068952.html
Copyright © 2011-2022 走看看