【问题标题】:Custom Search Provider for IE7 using javascript: call - is it possible?使用 javascript 的 IE7 自定义搜索提供程序:调用 - 可能吗?
【发布时间】:2009-10-03 17:37:35
【问题描述】:

我想为 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: 调用。

我知道这并不是搜索提供程序功能的真正目的,但对于我正在处理的特定情况(带有嵌套 iframe 和复杂耗时的初始化的传统客户端脚本繁重的 Intranet 应用程序)它会能够使用 IE 的搜索框在应用程序中触发搜索,而无需离开当前显示的页面,真是太好了。 如果有其他解决方案可以实现这一目标,我很想了解它们。该应用程序本身是 IE-only,因此这里无需讨论其他浏览器。

【问题讨论】:

    标签: javascript internet-explorer search


    【解决方案1】:

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

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

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

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

    1. 导航到http://jsbin.com/evoqu
    2. 在文本字段中输入“http://jsbin.com/ovajo”并单击“添加搜索提供程序”按钮
    3. 使用新添加的搜索提供程序并注意搜索词显示在页面上。

    您可以在此处查看和编辑演示页面和提供程序的源代码:
    http://jsbin.com/evoqu/edit
    http://jsbin.com/ovajo/edit

    【讨论】:

      猜你喜欢
      • 2012-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-25
      • 2015-02-07
      • 2011-01-09
      • 1970-01-01
      相关资源
      最近更新 更多