Chrome扩展调用chrome.history.search报No matching signature错误如何解决?
问题根因
你收到的报错是因为chrome.history.search接口不支持仅传入查询参数的调用形式,该接口要求必须指定结果的接收方式,和你配置的queryOptions参数无关。
调用前请先确认你已在manifest.json的permissions字段中添加了"history"权限,否则即便调用格式正确也无法正常获取数据。
对应版本修复方案
Manifest V2 版本
V2 版本的 Chrome 扩展 API 默认为回调风格,必须传入第二个回调参数接收结果:
function getSearchHistory(amount) { if (amount > 100) amount = 100; // API 单次最多返回100条记录 console.log("Fetched " + amount + " latest history entries."); let queryOptions = { text: '', maxResults: amount, startTime: 0 }; // 补充回调参数接收历史记录结果 chrome.history.search(queryOptions, function(historyItems) { // 此处编写处理历史记录的逻辑 console.log('历史记录查询结果', historyItems); }); };
Manifest V3 版本
V3 版本支持 Promise 调用,需要用await关键字接收接口返回的异步结果:
async function getSearchHistory(amount) { if (amount > 100) amount = 100; // API 单次最多返回100条记录 console.log("Fetched " + amount + " latest history entries."); let queryOptions = { text: '', maxResults: amount, startTime: 0 }; // 补充await接收Promise返回结果 const historyItems = await chrome.history.search(queryOptions); // 此处编写处理历史记录的逻辑 console.log('历史记录查询结果', historyItems); return historyItems; };
额外提示
你原有代码中的打印日志存在空格缺失问题,"Fetched " + amount + "latest"会输出类似Fetched 10latest history entries的格式问题,上述修复代码中已补充对应空格。
内容的提问来源于stack exchange,提问作者my first question here was bad
相关产品推荐
相关产品推荐

