我想为IE7或IE8创建一个自定义搜索提供程序,它不会请求带有搜索字符串作为参数的URL,而是调用JavaScript函数,将搜索字符串作为参数传递给函数。 首先,我在搜索提供程序XML中尝试了一些非常简单的事情:
<Url type="text/html" method="get" template="javascript:alert("{searchTerms}");"/>
但是,尝试在IE7中添加此搜索提供程序会引发错误:“Internet Explorer无法安装此搜索提供程序。搜索提供程序的信息存在问题。”
如果我将网址更改为更常规的内容,例如“http://localhost/search.aspx?q= {searchTerms}”,那就可以了,所以我很确定问题确实是javascript:call。
我知道这不是搜索提供程序功能的设计目的,但对于我正在处理的特定情况(具有嵌套iframe的旧版客户端脚本密集内部网应用程序以及精心设计的耗时初始化),它会很高兴能够使用IE的搜索框在应用程序中触发搜索,而无需导航离开当前显示的页面。 如果还有其他解决方案可以实现这一目标,我很乐意了解它们。该应用程序本身仅限IE,因此无需在此讨论其他浏览器。
答案 0 :(得分:1)
我能想到的唯一解决方案是使用将searchTerms
添加到URI的片段组件的搜索提供程序。然后,您可以使用setInterval
来解析window.location.hash
条款。
<Url template="http://example.com/absolute-path/#q={searchTerms}" type="text/html"></Url>
缺点是您的网站必须是具有已知网址的“单页应用程序”,因为search provider specification不允许模板中的相对网址。
我创建了一个小型演示页面和提供程序:
您可以在此处查看和编辑演示页面和提供者的来源:
http://jsbin.com/evoqu/edit
http://jsbin.com/ovajo/edit