在个人网站上使用谷歌Chrome的OmniBox [TAB]功能?

Fai*_* S. 14 google-chrome searching-xml opensearch

我认为标题解释了这一切,但我还是更深入地研究了我的问题:

如何在我的网站上使用Chrome的Omnibox [TAB]功能?

由于许多用户要求我在网站上实现该功能,我对OpenSearchDescription进行了研究,并且在使用FireFox和IE7/IE8搜索栏时非常成功.

然而,实施对Chrome Omnibox [TAB]功能并不起作用.

你能帮帮我吗?

我的OSD.xml代码:

<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/"
                       xmlns:moz="http://www.mozilla.org/2006/browser/search/">
<ShortName>MySite</ShortName>
<Description>My Site</Description>
<InputEncoding>UTF-8</InputEncoding>
<Image width="16" height="16" type="image/x-icon">http://MySite.com/favicon.ico</Image>
<Url type="application/x-suggestions+json" method="GET"
     template="http://ff.search.yahoo.com/gossip?output=fxjson&amp;command={searchTerms}" />
<Url type="text/html" method="POST" template="http://MySite.com/query.php">
  <Param name="sString" value="{searchTerms}"/>
</Url>
<Url type="application/x-suggestions+json" template="suggestionURL"/>
<moz:SearchForm>http://www.MySite.com</moz:SearchForm>
</OpenSearchDescription>
Run Code Online (Sandbox Code Playgroud)

这是我页面上osd文件的链接:

<link rel="search" type="application/opensearchdescription+xml" title="MySite" href="/opensearch.xml" />
Run Code Online (Sandbox Code Playgroud)

adr*_*nks 8

我在你自己的网站上比较了你对OpenSearchDescription的看法,我看不出你为什么不工作.唯一真正的区别是你使用POST搜索,而我正在使用GET.根据这个页面,IE7不支持POST请求,因此可能是其他浏览器也不支持POST.

我网站上的那个肯定适用于IE8,Chrome 3.0和FF 2.0+.您可以自己比较它们,看看您是否能发现差异:opensearch.XML


Fai*_* S. 5

在 Google Chrome 或 IE7 / IE8 下获得 OSD (OpenSearchDescription) 工作并不像上面提到的那么困难,或者这些浏览器不支持 POST 请求。

通过一些调整,我找到了解决整个问题的方法。

我的初始代码:

<Url type="text/html" method="POST" template="http://MySite.com/query.php">
  <Param name="sString" value="{searchTerms}"/>
</Url>
Run Code Online (Sandbox Code Playgroud)

此代码直接指向查询页面并在我的 POST 请求中传递 sString 属性的值。

这在 FireFox 上效果很好,但在 IE7/IE8 或 Google Chrome 上效果不佳(我还没有用 Opera 或 Safari 进行测试......)。


将代码更改为以下部分:

<Url type="text/html" template="http://MySite.com/query.php?sString={searchTerms}"></Url>
Run Code Online (Sandbox Code Playgroud)
  • 从元素中删除method="POST"
  • 更换/query.php与实际网页电话:/query.php?sString={searchTerms}
  • 删除现在不必要的“ <Param name="sString" value="{searchTerms}"/>

解决了我与那些浏览器不兼容的问题。

所有调用都直接指向查询页面,即使它最初是一个 POST 请求,现在它可以在 IE7/IE8 和谷歌浏览器上运行。

再次感谢 adrianbanks 为我提供了导致解决方案的 xml 文件!