Firefox 扩展是否有可能挂钩浏览器提供的搜索栏,以便在用户执行搜索时,回调函数(由扩展提供)接收搜索查询并使用了哪个搜索引擎?
我能够找到有关哪个XUL元素包含搜索栏文本框的信息(如何从Firefox扩展定位搜索栏?),但这是我所能得到的。
搜索栏元素有一堆由 XBL 文件定义的方法 chrome://browser/content/search/search.xml
.您感兴趣的功能将是 doSearch(query, where, engine)
.简单地覆盖它似乎效果很好:
// in the context of a loaded browser window…
let bar = document.getElementById("searchbar");
let doSearch = bar.doSearch;
bar.doSearch = function(query, where, engine) {
// your code here! e.g. console.log(query, where, engine);
// don't forget to call the original function:
doSearch(query, where, engine);
};
一个完整的示例是清除搜索扩展。