use*_*043 2 firefox-addon firefox-addon-sdk
我想添加一个新的搜索引擎,显示在firefox导航栏中显示的搜索栏的下拉列表中.当用户通过我的扩展程序的首选项设置它时,将其设置为默认的searchEngine.
对于非重新启动的扩展,通过XUL,我们使用Components来执行以下操作:
Cc["@mozilla.org/browser/search-service;1"].getService(Ci.nsIBrowserSearchService).addEngineWithDetails(...); //Adds a new search engine
Cc["@mozilla.org/browser/search-service;1"].getService(Ci.nsIBrowserSearchService).currentEngine = ...; //sets the current search engine value.
Run Code Online (Sandbox Code Playgroud)
如何在使用Firefox addon-sdk创建的无重启扩展中执行类似的操作?我看到的一个问题是没有稳定的API来获取和设置在'about:config'中列出的firefox首选项.但即使我使用此处记录的不稳定偏好服务,我也无法通过扩展来进行默认搜索引擎更改.请帮忙!
在Firefox中搜索有两个你需要担心的部分.
首先是搜索输入
您实际上将使用相同的系统来设置搜索引擎,但您需要在SDK中加载chrome模块.
var { Cc, Ci } = require("chrome");
var SearchService = Cc["@mozilla.org/browser/search-service;1"].getService(Ci.nsIBrowserSearchService);
// Add your engine to the list of engines in the drop down
SearchService.addEngineWithDetails('yoursearch', 'icon', 'yoursearchalias', 'your search description', 'get', 'http://stackoverflow.com/search?q={searchTerms}');
// Set your engine as the currentEngine so it's the default engine for the search input
SearchService.currentEngine = SearchService.getEngineByName('yoursearch');
Run Code Online (Sandbox Code Playgroud)
接下来是URL栏
更新:从Firefox 23开始,
keyword.URL首选项无效,上述代码将更改这两个区域的默认行为.
如果您想要更改用于URL栏的搜索引擎,则必须使用用户首选项.
var preferences = require('sdk/preferences/service');
// the 'search keyword' will be appended to the url you provide so strip out the
// {searchTerms} OpenSearch identifier
preferences.set('keyword.URL', 'http://stackoverflow.com/search?q=');
// When you want to set things back just reset the value
preferences.reset('keyword.URL');
Run Code Online (Sandbox Code Playgroud)
祝好运!
| 归档时间: |
|
| 查看次数: |
860 次 |
| 最近记录: |