【问题标题】:OpenSearch description document discovery and ChromeOpenSearch 描述文档发现和 Chrome
【发布时间】:2012-01-28 20:08:51
【问题描述】:

我正在尝试弄清楚如何使用 OpenSearch 来宣传我的 Web 应用程序的搜索端点(请参阅 http://www.opensearch.org/Specifications/OpenSearch/1.1#OpenSearch_description_document),但即使是我最简单的示例也不起作用。我有index.html 与:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="ltr">
    <head profile="http://a9.com/-/spec/opensearch/1.1/">
        <link title="Search" rel="search" type="application/opensearchdescription+xml" href="osdd.xml"/>
    </head>
    <body>
        hello
    </body>
</html>

osdd.xml 包含:

<?xml version="1.0" encoding="UTF-8"?>
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/" xmlns:moz="http://www.mozilla.org/2006/browser/search/">
    <ShortName>test</ShortName>
    <Description>test</Description>
    <Url type="text/html" template="http://example.com?q={searchTerms}"/>
</OpenSearchDescription>

但似乎没有任何效果。 Chrome 的“搜索标签”行为没有出现,并且使用开发者工具 Chrome 似乎根本没有加载 osdd.xml

有什么线索吗?

【问题讨论】:

  • mime 类型 application/opensearchdescription+xml 没有经过 IANA 注册,也没有以 x- 为前缀。这可能是问题所在。

标签: google-chrome opensearch


【解决方案1】:

osdd.xml 的加载未显示在开发人员工具 > 网络选项卡上。

http://code.google.com/p/chromium/issues/detail?id=58801#c3(评论3)提到您需要至少搜索一次才能添加搜索引擎。

我还发现您需要从“设置”>“管理搜索引擎”中删除现有搜索引擎并重新启动浏览器以查看更改 osdd 文件的效果。

【讨论】:

    【解决方案2】:

    很抱歉挖掘了这个帖子,但我遇到了类似的问题并设法解决了它,所以如果有人找到它,我会把我的发现留在这里。

    在我的例子中,XML 文件不在 UTF-8 上,因此 Chrome 无法正确加载。请确保您的文件是 UTF-8 格式。

    干杯!

    【讨论】:

    • 如果您的意思是文件以&lt;?xml version="1.0" encoding="UTF-8"?&gt; 之类的开头,那么这对我没有帮助。 Firefox 检测到我打开的搜索文件,但 Chrome 仍然没有。
    • 我不是在说这个。我在谈论实际的文件编码。就我而言,如果我没记错的话,我的文件保存在 ANSI 而不是 UTF-8 上。将其转换为 UTF-8 后,它就可以工作了。
    【解决方案3】:

    在此处添加一些最新信息。我找不到任何正式证据,但似乎 Android 上的 Chrome 在 2018 年 9 月的某个地方改变了何时在设置中显示新搜索引擎的逻辑。在此之前,它使用当用户简单地导航到该站点时工作。进行此更改后,搜索引擎并未立即显示在设置中。如果我访问具有开放式搜索元标记的网站,我就能让它工作。然后去另一个站点,然后再回来。它只出现在第二次。为了让用户更容易,我添加了一个隐藏的 iframe,它重定向到另一个站点(我控制),然后在该站点上,我在 2 秒后添加了一个重定向回原始站点的重定向。它似乎适用于我测试的所有设备(一些三星设备)。

    我看到 cmets here 说只有当用户位于根节点(mysite.com/ 但不是 mysite.com/foo)时才会查找 opensearch 文档。我的网站正在关注此评论,我没有尝试其他方式,因此我无法批准或拒绝这是否重要。

    【讨论】:

    • 我可以确认有关根节点要求的 cmets:今天使用 Chromium 86.0.4240.198 进行测试时,如果搜索表单由 example.org/ 提供,它只会加载 opensearch xml,而不是 example .org/file 或 example.org/dir/
    猜你喜欢
    • 1970-01-01
    • 2012-04-11
    • 2018-03-30
    • 1970-01-01
    • 1970-01-01
    • 2013-03-15
    • 2010-09-29
    • 2013-07-15
    • 1970-01-01
    相关资源
    最近更新 更多