使用javascript:call的IE7自定义搜索提供程序-可能吗?

使用javascript:call的IE7自定义搜索提供程序-可能吗?,javascript,internet-explorer,search,Javascript,Internet Explorer,Search,我想为IE7或IE8创建一个自定义搜索提供程序,它不请求将搜索字符串作为参数的URL,而是调用JavaScript函数,将搜索字符串作为参数传递给函数。 首先,我在搜索提供程序XML中尝试了一些非常简单的方法: <Url type="text/html" method="get" template="javascript:alert(&quot;{searchTerms}&quot;);"/> 但是,尝试在IE7中添加此搜索提供程序会引发错误:“Intern

我想为IE7或IE8创建一个自定义搜索提供程序,它不请求将搜索字符串作为参数的URL,而是调用JavaScript函数,将搜索字符串作为参数传递给函数。 首先,我在搜索提供程序XML中尝试了一些非常简单的方法:

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

但是,尝试在IE7中添加此搜索提供程序会引发错误:“Internet Explorer无法安装此搜索提供程序。搜索提供程序的信息有问题。”

如果我将URL更改为更常规的内容,如“{searchTerms}”,它会工作,因此我相当确定问题真正在于javascript:call

我知道这并不是搜索提供者功能的真正目的,而是针对我正在处理的特定案例(传统客户端脚本繁重的intranet应用程序,带有嵌套的iFrame和复杂耗时的初始化)如果能够使用IE的搜索框触发应用程序中的搜索,而无需离开当前显示的页面,那将是一件非常棒的事情。
如果有其他解决方案可以实现这一点,我很想了解它们。该应用程序本身仅限于IE,因此无需在此讨论其他浏览器。

我能想到的唯一解决方案是使用搜索提供程序,将
搜索词添加到URI的片段组件中。然后可以使用
setInterval
解析术语的
window.location.hash

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

这样做的缺点是,您的网站必须是一个具有已知URL的“单页应用程序”,因为模板中不允许相对URL

我创建了一个小的演示页面和提供程序:

  • 导航到
  • 在文本字段中输入“”,然后单击“添加搜索提供程序”按钮
  • 使用新添加的搜索提供程序,注意页面上会显示搜索词
  • 您可以在此处查看和编辑演示页面和提供程序的源代码: