Использовать функцию Google Chrome OmniBox [TAB] для / на личном веб-сайте? - PullRequest
13 голосов
/ 23 августа 2009

Я думаю, что название объясняет все, но я все равно углубляюсь в свой вопрос:

Как я могу использовать функцию 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>

А это ссылка на файл osd на моей странице:

<link rel="search" type="application/opensearchdescription+xml" title="MySite" href="/opensearch.xml" />

Ответы [ 2 ]

8 голосов
/ 23 августа 2009

Я сравнил то, что у тебя есть, с описанием OpenSearch на моем собственном сайте, и я не могу понять, почему у тебя не работает. Единственная реальная разница в том, что вы используете POST для поиска, а я использую GET. Согласно этой странице, IE7 не поддерживает запросы POST, поэтому может случиться так, что другие браузеры также не поддерживают POST.

Тот, что на моем сайте, определенно работает в IE8, Chrome 3.0 и FF 2.0+. Не стесняйтесь сравнивать их сами и посмотреть, сможете ли вы заметить разницу: opensearch.XML

4 голосов
/ 23 августа 2009

Начало работы OSD (OpenSearchDescription) в Google Chrome или IE7 / IE8 не так сложно, как упоминалось, или что эти браузеры не поддерживают запросы POST.

Немного подправив, я нашел обходной путь ко всей проблеме.

Мой начальный код:

<Url type="text/html" method="POST" template="http://MySite.com/query.php">
  <Param name="sString" value="{searchTerms}"/>
</Url>

Этот код указывает непосредственно на страницу запроса и передает значение атрибута sString в моем запросе POST.

Это отлично работает в FireFox, но не совсем хорошо работает в IE7 / IE8 или Google Chrome (я еще не тестировал Opera или Safari ...).


Изменение кода на следующий фрагмент:

<Url type="text/html" template="http://MySite.com/query.php?sString={searchTerms}"></Url>
  • Удаление method = "POST" из элемента
  • Замена / query.php фактическим вызовом страницы: / query.php? SString = {searchTerms}
  • Удаление ненужных теперь "<Param name="sString" value="{searchTerms}"/>"

Решена проблема несовместимости с этими браузерами.

Все вызовы направляются непосредственно на страницу запроса, и даже если изначально это был запрос POST, теперь он работает как в IE7 / IE8, так и в Google Chrome.

Еще раз спасибо adrianbanks за предоставление мне вашего xml файла, который привел к решению!

...