Использование функции Google Chrome OmniBox [TAB] для личного веб-сайта?
Я думаю, что название объясняет все это, но я все равно углубляюсь в мой вопрос:
Как я могу использовать функцию 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&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" />
Ответы
Ответ 1
Получение 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>
- Удаление метода = "POST" из элемента
- Замена /query.php на фактический вызов страницы: /query.php?sString= {searchTerms}
- Удаление ненужного "
<Param name="sString" value="{searchTerms}"/>
"
Устранена моя проблема несовместимости с этими браузерами.
Все вызовы напрямую направляются на страницу запроса, и даже первоначально это был запрос POST, теперь он работает как с IE7/IE8, так и с Google Chrome.
Еще раз спасибо adrianbanks за предоставление мне вашего xml файла, который привел к решению!
Ответ 2
Я сравнил то, что у вас есть против OpenSearchDescription, на моем собственном сайте, и я не понимаю, почему вы не работаете. Единственное реальное различие заключается в том, что вы используете POST для поиска, тогда как я использую GET. Согласно этой странице, IE7 не поддерживает запросы POST, поэтому может быть, что другие браузеры также не поддерживают POST.
Тот, что на моем сайте определенно работает в IE8, Chrome 3.0 и FF 2.0+. Не стесняйтесь сравнивать их самостоятельно и посмотрите, можете ли вы определить разницу: opensearch.XML