OpenSearch description document discovery and Chrome

别说谁变了你拦得住时间么 提交于 2019-12-07 00:51:47

问题


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?


回答1:


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.




回答2:


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!




回答3:


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.



来源:https://stackoverflow.com/questions/8650377/opensearch-description-document-discovery-and-chrome

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!