我的 Firefox 插件应添加一个搜索引擎,即
- 提供建议
- 获取运行时指定的搜索模板 URL(即:模板 URL 取决于用户的首选项)
而且我没有找到同时完成这两件事的方法。
我看到两个添加搜索引擎的选项:
addEngineWithDetails()
允许我使用模板 URL 添加搜索引擎。但它(显然?)不允许提供建议 URL。
addEngine()
允许我添加在 XML 文件中指定的搜索引擎。但是,如果该文件本地保存在我的插件目录中(例如 chrome://example-engine/content/search.xml
),如何在运行时更改模板 URL?使用在线 XML 是一种不安全的选择,因为在插件安装过程中互联网连接可能会中断或损坏。
最佳答案
首先,你是对的,addEngineWithDetails
不支持建议。
正确的方法是使用 addEngine
(和removeEngine
)。
至于你的问题的“动态”部分:虽然我没有测试它,但实现似乎很愉快accept data:
URIs 。所以你可以:
- 使用您喜欢的任何方法构建数据 URI(甚至构建完整的 XML DOM 并将其序列化)。
- 使用数据 URI 调用
addEngine
。 - 当用户更改首选项时,删除旧引擎并构建新引擎。
关于Firefox-Addon:添加具有不同 URL 和建议的搜索引擎,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19776271/