通过 JavaScript 添加自定义搜索引擎

Joe*_*e50 3 html javascript search-engine

我正在尝试创建一个非常简单的网站,使用Google Charts QR API生成 QR 代码。我使用的代码非常简单

<form id="QR" action="http://chart.apis.google.com/chart" target="QRwindow" method="POST">
  <h1>QR Code<br/>Generator</h1>
  <textarea autofocus name="chl"
  onkeypress="if(event.which==13&&!event.shiftKey){document.getElementById('cht').click();event.preventDefault();}"
  onkeyup="if(this.value.length&gt;2000) this.value=this.value.substring(0,1500)"></textarea>
  <div>QR size (px):</div>
  <input type="hidden" name="chld" value="|0"/>
  <input type="number" name="chs" value="250" min="50" max="275"/>
  <button type="submit" name="cht" id="cht" value="qr">Generate!</button>
</form>
<iframe name="QRwindow" id="QRwindow" width="275" height="275" frameborder="0" src="http://chart.apis.google.com/chart?chld=|0&chs=250&cht=qr&chl=Foo%20Bar"></iframe>
Run Code Online (Sandbox Code Playgroud)

http://jsbin.com/fule/2/

我想做的是添加一个按钮,自动让用户添加具有以下网址的搜索引擎:

http://chart.apis.google.com/chart?chld=|0&chs=250&cht=qr&chl=%s
Run Code Online (Sandbox Code Playgroud)

但我找不到任何方法来自动为用户添加搜索引擎。我当然知道这可能存在安全风险,但也有可能添加处理程序 gmail mailto:,因此我想象一种类似的浏览器设置,例如添加搜索引擎是可能的(无论是用户的确认)也。这有可能吗?

Mar*_*S95 6

您可以通过创建包含搜索引擎信息的 xml 文档来完成此操作,并使用以下命令添加它:

window.external.AddSearchProvider('/linktoyourxmldoc.xml')
Run Code Online (Sandbox Code Playgroud)

您的 XML 应具有以下属性:

<?xml version='1.0' encoding='UTF-8'?>
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">
    <ShortName>QR creator</ShortName>
    <Description>Create a QR code.</Description>
    <Tags>qr</Tags>
    <Contact>youremail@email.com</Contact>
    <Url type="text/html" template="http://chart.apis.google.com/chart?chld=|0&amp;chs=250&amp;cht=qr&amp;chl={searchTerms}"/>
</OpenSearchDescription>
Run Code Online (Sandbox Code Playgroud)

我还没有让它在 Chrome 中工作。

编辑:它不起作用,您需要将 & 符号更改为&amp;

这都是根据opensearch 标准的。页面上有更多搜索选项和信息。

我不知道为什么它不能在 chrome 中工作,因为文档指出它也可以在 chrome 中工作。

似乎您也可以直接在标题中放置一个链接:

<link rel="search" type="application/opensearchdescription+xml" href="/linktoyourxmldoc.xml" title="MySite Search" />
Run Code Online (Sandbox Code Playgroud)