Firefox:以编程方式添加搜索引擎并立即使用它

时间:2013-10-04 00:06:14

标签: firefox firefox-addon search-engine

我开发了一个与Firefox 24打破的Firefox插件。

我的插件根据一些用户设置在搜索栏中添加了一个搜索引擎。要添加搜索引擎,我使用nsIBrowserSearchService中的addEngine()

在Firefox 23之前,此功能还选择了添加的引擎,因此用户可以立即使用它。从Firefox 24开始,此行为已停止:正在添加引擎但不再选择引擎。

然而,documentation still says

  

......新引擎将立即自动使用。

如何在Firefox 24中立即强制使用新引擎?

1 个答案:

答案 0 :(得分:2)

一点点解决方法是在添加新搜索引擎后直接更改默认搜索引擎的首选项:

browser.search.defaultenginename

此首选项采用搜索引擎的确切名称。

此外,有关于在this MDN tutorial中添加搜索引擎的更多信息:

function startup(data, reason) {
    firstRun = reason == ADDON_INSTALL;
    // Re-select the search engine if this is the first run
    // or we're being re-enabled.
    selectSearch = firstRun || reason == ADDON_ENABLE;

    // Only add the engine if it doesn't already exist.
    if (!Services.search.getEngineByName(ENGINE_DETAILS.name)) {
        Services.search.addEngineWithDetails.apply(Services.search,
            ["name", "iconURL", "alias", "description", "method", "url"].map(
                function (k) ENGINE_DETAILS[k]))
    }

    let engine = Services.search.getEngineByName(ENGINE_DETAILS.name);

    // If the engine is not hidden and this is the first run, move
    // it to the first position in the engine list and select it
    if (selectSearch && !engine.hidden) {
        Services.search.moveEngine(engine, 0);
        Services.search.currentEngine = engine;
    }
}