我正在尝试使用browser.history.search()
检索整个可用历史记录。由于默认的最大结果数为100,因此Mozilla的example provided不起作用。
我以为我可以通过将最后一批最早找到的日期作为下一次搜索的上限来传输多个搜索的历史记录。
async function getHistory() {
const query = { text: '', startTime: 0 }
const results = [];
let response;
while ((response = await browser.history.search(query)).length > 0) {
results.concat(response);
query.endTime = response[response.length-1].lastVisitTime - 1;
}
return results;
}
这似乎没有用,因为搜索返回的项目的lastVisitTime
大于传递给查询对象的endTime
,这不是我从文档中获得的。
我找到的另一种方法是将最大可能值传递给maxResults
253-1
252.我宁愿不这样做,因为我想以更易于管理的方式传输数据。
第一种方法我做错了什么?如何将相邻历史记录条目的块流式传输到最后?
对于遇到此问题的任何人来说,问题在于MDN文档。它最初为endTime
说“如果它被提供,这个选项不包括lastVisitTime
晚于此时的结果”。在实践中,endTime
适用于任何访问,并在提交this bug report后,文件已得到纠正。
看起来没有办法从Web扩展API迭代地获取时间相邻的VisitItem
s块。您可以通过使用最旧的结果lastVisitTime
作为下一个块的startTime
来解决这个问题,并放弃过去的任何访问。
这意味着一些开销,但我怀疑这将在当前的浏览器生成中得到解决,因为Chrome作为主流浏览器已经拥有良好的历史浏览器,并且Firefox历史附加组件的需求量并不高。
This bug也对问题有了很好的描述,以及为什么开发人员选择以这种方式实现历史搜索。