Landon Kuhn
Landon Kuhn

Reputation: 78441

OpenSearch description document discovery and Chrome

I'm trying to figure out how to advertise my web application's search endpoint using OpenSearch (see http://www.opensearch.org/Specifications/OpenSearch/1.1#OpenSearch_description_document), but even my simplest example does not work. I have index.html with:

<!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>

And osdd.xml containing:

<?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>

But nothing appears to work. Chrome's "tab to search" behavior does not show up, and using the developer tools Chrome does not seem to be loading osdd.xml at all.

Any clues?

Upvotes: 9

Views: 5214

Answers (4)

Lampe2020
Lampe2020

Reputation: 350

For me I fixed the autodetection at least in Firefox by adding a <link> element to my page's <head>:

<link rel="search" type="application/opensearchdescription+xml" title="Search engine name" href="./osdd.xml">

If the osdd.xml file follows the specification and is present at the path in the href attribute it should automatically be suggested when focusing the address/serch bar while on that page, at least in Firefox.

Chrome doesn't seem to have any such behaviour (at least not on sub pages of the website) and still doesn't load my search definition on my own website.

Upvotes: 0

Shay
Shay

Reputation: 31

Adding some more recent info here. I couldn't find any formal proof for it, but it seems like Chrome on Android changed the logic of when to show a new search engine in the settings, somewhere in September 2018. Before that, it used to work when the user simple navigated to the site. After this change, the search engine didn't show up immediately in the settings. I was able to make it work, if I go to my site that has open search meta tag. Then go to another site, and then come back. It only showed up on the second time. To make it easier for the user, I add a hidden iframe, that redirects to another site (which I control), and on that site I added a redirect back to the original site, after 2 seconds. It seems to work on all the devices I tested (a few samsung devices).

I saw comments here that says that the opensearch doc will only be looked for when the user is at the root node (mysite.com/ but not mysite.com/foo). My site is following this comment, and I didn't try otherwise, so I can't approve or deny if this is important.

Upvotes: 0

jpsfs
jpsfs

Reputation: 708

Sorry for digging up this thread but I had a similar issue and managed to resolve it, so I leave my findings here if anyone finds it.

In my case, the XML file wasn't on UTF-8 thus not being correctly loaded by Chrome. Please ensure your file is on UTF-8.

Cheers!

Upvotes: 3

Lord Loh.
Lord Loh.

Reputation: 2477

Loading of the osdd.xml does not show up on the Developer Tools > Network tab.

http://code.google.com/p/chromium/issues/detail?id=58801#c3 (comment 3) mentions that you need to search at least once to add the search engine.

I also discovered that you need to delete existing search engines from the Settings > Manage Search Engines and restart the browser to see effects of changes to the osdd file.

Upvotes: 7

Related Questions