Поставщик пользовательского поиска для IE7 с использованием javascript: call - возможно ли это? - PullRequest
0 голосов
/ 03 октября 2009

Я хотел бы создать пользовательский поставщик поиска для IE7 или IE8, который не запрашивает URL-адрес со строкой поиска в качестве параметра, но вместо этого вызывает функцию JavaScript, передавая строку поиска в качестве аргумента функции. Для начала я попробовал кое-что действительно простое в своем поисковике XML:

<Url type="text/html" method="get" template="javascript:alert(&quot;{searchTerms}&quot;);"/>  

Однако при попытке добавить этого поискового поставщика в IE7 выдается сообщение об ошибке: «Internet Explorer не может установить этого поискового поставщика. Произошла ошибка с информацией о поисковом поставщике».

Если я изменю URL-адрес на что-то более традиционное, например "http://localhost/search.aspx?q={searchTerms}"", это сработает, поэтому я вполне уверен, что проблема на самом деле заключается в вызове javascript:

Я знаю, что это не совсем то, для чего была разработана функция провайдера поиска, но для конкретного случая, над которым я работаю (старое клиентское приложение для интрасети со сложными сценариями с вложенными фреймами и сложная трудоемкая инициализация) здорово иметь возможность использовать окно поиска IE для запуска поиска в приложении, не отходя от отображаемой в данный момент страницы. Если есть другие решения для этого, я хотел бы узнать о них. Само приложение предназначено только для IE, поэтому здесь нет необходимости обсуждать другие браузеры.

1 Ответ

1 голос
/ 05 октября 2009

Единственное решение, которое я могу придумать, - это использовать провайдера поиска, который добавляет searchTerms к компоненту фрагмента URI. Затем вы можете использовать setInterval для анализа window.location.hash для условий.

<Url template="http://example.com/absolute-path/#q={searchTerms}" type="text/html"></Url>

Недостатком этого является то, что ваш веб-сайт должен быть «одностраничным приложением» с известным URL-адресом, поскольку спецификация поискового поставщика *1008* не разрешает относительные URL-адреса в шаблоне.

Я создал небольшую демонстрационную страницу и провайдера:

  1. Перейдите к http://jsbin.com/evoqu
  2. Введите "http://jsbin.com/ovajo" в текстовое поле и нажмите кнопку" Добавить поставщика поиска "
  3. Воспользуйтесь недавно добавленным поисковым сервисом и обратите внимание, что на странице отображаются условия поиска.

Вы можете просмотреть и отредактировать исходный код демонстрационной страницы и провайдера здесь:
http://jsbin.com/evoqu/edit
http://jsbin.com/ovajo/edit

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...