Используете функцию OmniBox [ВКЛАДКА] в Google Chrome для / на личном веб-сайте?
-
19-09-2019 - |
Вопрос
Я думаю, что название объясняет все это, но я все равно углубляюсь в свой вопрос:
Как я могу использовать функцию Омнибокса Chrome [ВКЛАДКА] для своего веб-сайта?
Поскольку многие пользователи просили меня внедрить эту функцию на сайте, я провел исследование по описанию OpenSearchDescription и был очень успешен в реализации с помощью FireFox и IE7 / IE8 Searchbar.
Тем не менее, реализация не совсем сработала для функции 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>
А это ссылка на экранный файл на моей странице:
<link rel="search" type="application/opensearchdescription+xml" title="MySite" href="/opensearch.xml" />
Решение 2
Заставить 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>
- Удаление метод="СООБЩЕНИЕ" из стихии
- Замена /query.php с фактическим вызовом страницы: /запрос.php?sString={searchTerms}
- Удаление теперь ненужного "
<Param name="sString" value="{searchTerms}"/>
"
Решена моя проблема несовместимости с этими браузерами.
Все вызовы направляются непосредственно на страницу запроса, и хотя изначально это был POST-запрос, теперь он работает как в IE7 / IE8, так и в Google Chrome.
Еще раз спасибо adrianbanks за предоставление мне вашего xml-файла, который привел к решению!
Другие советы
Я сравнил то, что у вас есть, с описанием OpenSearchDescription на моем собственном сайте, и я не могу понять, почему ваш не работает.Единственное реальное отличие заключается в том, что вы используете POST для поиска, в то время как я использую GET .Согласно это страница, IE7 не поддерживает запросы POST, поэтому может случиться так, что другие браузеры также не поддерживают POST.
Тот, что на моем сайте, определенно работает в IE8, Chrome 3.0 и FF 2.0+.Не стесняйтесь сравнивать их сами и посмотреть, сможете ли вы заметить разницу: opensearch.XML