5

我有一個本地搜索引擎,由elasticsearch和一個用於搜索的瘦nodejs API支持。我希望能夠直接從Google Chrome搜索這些文檔(可以從Google獲得,而不是Chromium)。在這個用例中,我將使用鍍鉻僅限於與此搜索引擎,所以我不想使用OmniBox關鍵字搜索API。我需要和在Chrome中選擇默認搜索引擎時一樣的行爲。這是在Chrome中添加自定義搜索引擎的建議URL

  1. 開始在OmniBox中輸入並顯示建議列表。
  2. 回車,才能在搜索結果頁面

我加入下設置一個新的搜索引擎,並提供了搜索API的URL得到了#2的工作。我無法獲得#1的工作。

通過我的服務器暴露的這兩個網址是:

  1. http://localhost:3000/complete?query=my(這將返回我想展示,而在網址列中輸入搜索建議列表)。

  2. http://localhost:3000/results?query=my+sample+query(這將返回實際搜索結果的網頁,這是工作)

的事情,我曾嘗試:

  1. 新增搜索引擎使用window.externals。 AddSearchProvider與OpenSearchDescription.xml鏈接。 XML也有建議url。

  2. 試着寫一個背景延伸與多功能框,但它不允許我不使用我通過鉻所搜索的關鍵詞

搜索,發現這個JSON文件

https://code.google.com/p/chromium/codesearch#chromium/src/components/search_engines/prepopulated_engines.json&q=prepopulated&sq=package:chromium&l=1

但我不知道如何使用它(或者如果它甚至可以在官方版本的Chrome中使用它)。

回答

0

有一個Setting Overrides機制的Chrome擴展,這並不廣爲人知,它可以達到你想要什麼,但:

  • 至少根據文檔,它僅適用於Windows
  • 除非您可以通過網站管理員工具驗證網站,否則您將無法發佈擴展程序。否則,你會被解壓縮安裝。
+0

謝謝!我不知道他們爲什麼不能在Mac上使用它。 – suparngp

+0

如果你想純粹的推測:它是在Windows惡意軟件發生打擊時(和引入安全首選項)寫的,所以這是一個解決合法用例的解決方法。 – Xan

+0

阿哈!這看起來很可能。看到我的答案一個解決方案。 – suparngp

3

我終於找到了解決方案。

opensearch.xml文檔參考可以用作HTML頁面頭部的鏈接。它包含兩個URL方案,一個用於搜索結果和其他建議。

詳情可以在這裏找到: Opensearch Document Specs

只要我更新我的index.html並在Chrome中打開該頁面,Chrome會自動添加一個新的搜索引擎。它沒有顯示在設置>管理搜索引擎下有一個建議URL。

接下來,我選擇我的引擎作爲默認搜索引擎,點擊默認並完成!現在,我可以在不使用關鍵字的情況下查看多功能框中的所有搜索建議。

+0

這是一個非常有用的發現 – Xan

+0

我運行了Charles Proxy,並注意到每次鍵入內容時都會有一個API調用,所以每個搜索引擎都有一個建議URL設置。當我檢查DuckDuckGo網站的操作時,我偶然發現了這個特殊的解決方案。點擊此處在Chrome瀏覽器上安裝DDG。他們調用window.external.AddSearchProvider(「鏈接到ddg的opensearch.xml)。完成後,我得到了這個xml文件作爲參考,用我的服務器信息編輯它,它工作。 – suparngp

相關問題